[置顶] flex的AIR处女作-QQ聊天记录拷贝另存服务器
2013-05-23 21:46
393 查看
<?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消息中有截图,其实是保存在你电脑中的一个文件夹下,拷贝过来的是路径
相关文章推荐
- flex的AIR处女作-QQ聊天记录拷贝另存服务器
- 旺旺 QQ的聊天记录(含图片)保存到自己的服务器
- Process Monitor监测记录表明,QQ不仅会自动访问许多与聊天无关的程序和文档,例如“我的文档”等敏感位置,测试当天的上网记录也没能幸免。随后,QQ还会产生大量网络通讯,很可能是将数据上传到腾讯服务器。短短10分钟内,它访问的无关
- QQ聊天记录备份助手 v1.0——搜索、备份、恢复QQ聊天记录文件,重装系统必备
- QQ是如何监控你的聊天记录的
- 截获QQ数据包 截获QQ聊天记录
- 实验周作业~~QQ聊天记录的处理
- 分享怎么样玩转QQ聊天记录备份、查看以及恢复的小技巧
- [原创][QQ聊天记录]-和“阮”谈有关数据加密(.NET CF数据加密,DSA算法)
- QQforMacQQforMac聊天记录/登录信息的保存路径 QQ for Mac使用问题
- 文本分析实例---QQ聊天记录分析
- R语言编程实现批量化处理非结构化的QQ聊天记录(优化版)
- 安装QQ聊天软件记录过程
- Android仿qq聊天记录待定与删除功能效果
- 把QQ聊天记录插入数据库中
- 仅用四行代码就可以挖掘你的QQ聊天记录
- mac QQ 聊天记录 数据表
- 基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件
- 陌陌聊天记录被删除了,还能恢复吗?QQ1622863529
- flex聊天 发送QQ表情