zoukankan      html  css  js  c++  java
  • [置顶] flex的AIR处女作QQ聊天记录拷贝另存服务器

    <?xml version="1.0" encoding="utf-8"?>
    <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
    					   xmlns:s="library://ns.adobe.com/flex/spark"
    					   xmlns:mx="library://ns.adobe.com/flex/mx"
    					   width="800" height="600" creationComplete="callLater(init)">
    	<fx:Script>
    		<![CDATA[
    			import flashx.textLayout.conversion.TextConverter;
    			import flashx.textLayout.elements.TextFlow;
    			import flashx.textLayout.factory.StringTextLineFactory;
    			
    			import mx.controls.Alert;
    			import mx.rpc.events.FaultEvent;
    			import mx.rpc.events.ResultEvent;
    			
    			var content:String="";
    			var newcontent:String="";
    			var imgcount:int=0;
    			var imgreplace:int=0;
    			
    			private function init():void{
    				 
    			}
    			
    			protected function richeditabletext1_pasteHandler(event:Event):void
    			{
    				var a:* = Clipboard.generalClipboard.getData(ClipboardFormats.HTML_FORMAT); //从系统剪切板中读取是html格式的数据
    				if(a!=null){
    					var stra:String= a as String;
    					content=content as String;
    					
    					var myPattern:RegExp =/file:\/\/\//gi; 
    					stra=stra.replace(myPattern, "");
    					
    					content=content+stra;
    					a=content as Object;
    					abc.textFlow = TextConverter.importToFlow(a, TextConverter.TEXT_FIELD_HTML_FORMAT);
    				}
    				
    			}
    			
    			protected function button1_clickHandler(event:MouseEvent):void
    			{
    				
    				if(abc.text==""){
    					Alert.show("输入不能为空");
    					return ;
    				}
    				var flexreg:RegExp=/<IMG/gi;
    				
    				if(content.search(flexreg)<0){//说明提交的内容没有图片,那么就直接提交
    					var params:Object = {};  
    					params["content"]=abc.text;
    					service.send(params);
    					return;
    				}
    				
    				
    				
    				//把content中的img的标签替换掉,替换成{图片发送上去,服务器返回给客户端的一个地址}
    				
    				
    				
    				while(content.search(flexreg)>=0){
    					
    					imgcount++;//图片数量加一
    					
    					var start:int=content.search(flexreg);
    					newcontent=newcontent+content.substring(0,start);//newcontent信息取到标签之前
    					content=content.substring(start,content.length);//content字符串去掉<IMG之前的字符
    					
    					var intsrc:int=content.indexOf("src");
    					newcontent=newcontent+content.substring(0,intsrc);//把src属性之前的字符取到,可能有width之类的
    					content=content.substring(intsrc,content.length);
    					
    					var intone:int=content.indexOf('"');
    					newcontent=newcontent+content.substring(0,intone+1);//把第一个引号字符取到,可能有width之类的
    					newcontent=newcontent+"{"+imgcount+"}";
    					
    					content=content.substring(intone+1,content.length);
    					
    					var inttwo:int=content.indexOf('"');
    					
    					var strsrc:String=content.substring(0,inttwo);//图片的地址
    					content=content.substring(inttwo,content.length);//原先字符串去掉路径
    					
    					
    					//向newcontent中添加返回的绝对路径
    					var file:File = new File(strsrc);
    					if(file.exists){
    						file.upload(new URLRequest("http://localhost:8080/WallpaperShowShow/terminal/serve_uploadImg?imgcount="+imgcount),"file");
    						file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadComplete);
    						file.addEventListener(IOErrorEvent.IO_ERROR,onIoError);
    					}
    					
    				}
    				
    				//要把最后一个img标签后面的字符加入进去
    				newcontent=newcontent+content;
    				
    				
    			}
    			
    			
    			protected function uploadComplete(event:DataEvent):void{
    				
    				
    				var obj:Object=JSON.parse(event.data)
    				var state:String=obj.state as String;
    				if(state == "0"){
    					Alert.show("图片上传失败");
    					return ;
    				}
    				var strs:Array=state.split("&");
    				
    				newcontent=newcontent.replace("{"+strs[1]+"}",strs[0]);
    				imgreplace++;
    				
    				if(imgcount==imgreplace){
    					trace(newcontent);
    					var params:Object = {};  
    					params["content"]=newcontent;
    					
    					service.send(params);
    				}
    				
    			}
    			
    			protected function onIoError(event:IOErrorEvent):void{
    				Alert.show("图片上传失败");
    			}
    			
    			//调用失败  
    			protected function service_faultHandler(event:FaultEvent):void  
    			{  
    				Alert.show("失败了","提示");
    			}
    			
    			protected function service_resultHandler(event:ResultEvent):void 
    			{
    				Alert.show("成功了","提示");  
    				abc.text="";
    			}
    			
    		]]>
    	</fx:Script>
    	<fx:Declarations>
    		
    		<s:HTTPService id="service"   
    					   url="http://localhost:8080/WallpaperShowShow/terminal/serve_addServeRecord"   
    					   useProxy="false" method="POST"  
    					   fault="service_faultHandler(event)"   
    					   result="service_resultHandler(event)" resultFormat="text">    
    			
    		</s:HTTPService>  
    		
    		
    	</fx:Declarations>
    	<s:HGroup verticalAlign="baseline" top="30" left="80">
    		<s:Label fontSize="14" text="客服:"/>
    		<s:TextInput />
    	</s:HGroup>
    	
    	
    	<s:VGroup horizontalCenter="0" verticalCenter="0">
    		
    		<s:HGroup verticalAlign="baseline">
    			<s:Label backgroundColor="#FFFFFF" fontFamily="Arial" fontSize="14" text="内容:"/>
    			<s:Group>
    				
    				<s:Rect width="600" height="450">
    					<s:stroke>
    						<s:SolidColorStroke color="0x0"/>
    					</s:stroke>
    				</s:Rect>
    				<s:RichEditableText id="abc" x="0" y="0" width="600" height="450" text="RichEditableText" paste="richeditabletext1_pasteHandler(event)">
    					<s:span></s:span>
    				</s:RichEditableText>
    
    			</s:Group>
    		</s:HGroup>
    	</s:VGroup>
    	<s:Button x="473" y="31" label="提交" id="btn" click="button1_clickHandler(event)"/>
    	
    </s:WindowedApplication>
    

    服务器端的代码

    /**
    	 * 图片上传到服务器
    	 * @return
    	 */
    	public String uploadImg(){
    		
    		try {
    			
    			HttpServletRequest request = ServletActionContext.getRequest();
    			String uploadPath = request.getSession().getServletContext().getRealPath("/uploadimg");
    			
    			FileInputStream fis=new FileInputStream(file);
    			
    			//对name进行处理
    			String str= new SimpleDateFormat("yyyyMMddhhmmss").format(new Date())+(int)(Math.random()*1000);
    			fileFileName=str+fileFileName.substring(fileFileName.lastIndexOf("."), fileFileName.length());
    			
    			File f=new File(uploadPath+"/" + fileFileName);
    			if(!f.exists()){
    				f.createNewFile();
    			}
    			
    			FileOutputStream fos=new FileOutputStream(f);
    			byte[] b = new byte[1024];
    			int len = 0;
    			while(true){
    				len = fis.read(b);
    				if(len<0)break;
    				fos.write(b, 0, len);
    			}
    			fos.close();
    			fis.close();
    			state="http://localhost:8080/WallpaperShowShow/uploadimg/"+fileFileName+"&"+imgcount;
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    			logger.error("UploadImgAction.uploadImg!", e);
    			state = "0";
    			return ERROR;
    		}
    		
    		
    		return SUCCESS;
    	}
    
    	
    	/**
    	 * 把上传的字符串写入数据库
    	 * @return
    	 */
    	public String addServeRecord(){
    		//写入数据库
    		
    		return SUCCESS;
    	}


    这个不仅把你的QQ聊天记录中的信息保存起来,还可以把word中 的信息保存起来,用这个程序的前提是你在信息中的图片,不是真正就一张图片,比如,你拷贝过来的

    QQ消息中有截图,其实是保存在你电脑中的一个文件夹下,拷贝过来的是路径


  • 相关阅读:
    SQL生成上百万条数据 及分页 长沙
    aspx或ashx里面多个方法 进行ajax调用 长沙
    C# IO操作,文件 文件夹 长沙
    Reperter多层嵌套 长沙
    解读WPF中事件
    WPF 神话之Binding对象二
    WPF 神话之Binding对象一
    明白就好
    导出Execl和读取Execl文件
    新加入博客园,嘿嘿
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3095767.html
Copyright © 2011-2022 走看看