相关文章推荐
豪爽的肉夹馍  ·  Android ...·  3 天前    · 
私奔的卤蛋  ·  MySQL CONV()函数 - ...·  1 年前    · 
谈吐大方的拐杖  ·  javascript - ...·  1 年前    · 
从未表白的柠檬  ·  VS2017 ...·  1 年前    · 

其实这个功能的总思路是 包所有的QQ聊天记录和旺旺的聊天记录先拷贝到word,让word把图片进行base64的加密,切记word保存时候的格式是mht的

比如我保存了一份聊天记录,用notepad++打开


可以看到在<!--StartFragment-->
<!--EndFragment-->标签内容才是你拷贝的内容图片后面的src是content-Location后面的字符

后面我们就是解析了

public String newAddServeRecord() {
		InputStreamReader r = null;
		BufferedReader br = null;
		try {
			String uploadPath = Tools.getStrutsProp().getValue("uploadPath")
					+ "recordImgs/";
			File recf = new File(uploadPath);
			recf.mkdirs();
			String urlPath = Tools.getStrutsProp().getValue("urlPath")
					+ "recordImgs/";
			r = new InputStreamReader(new FileInputStream(mhtFile), "UTF-8");
			br = new BufferedReader(r);
			String result = "";
			Map<String, String> imgMap = new HashMap<String, String>();
			String startFragment = "<!--StartFragment-->";
			String endFragment = "<!--EndFragment-->";
			String base64 = "Content-Transfer-Encoding: base64";
			String location = "Content-Location: ";
			String str = null;
			while ((str = br.readLine()) != null) {
				if (str.indexOf(startFragment) != -1) {
					if (str.indexOf(endFragment) != -1) {
						result += str.substring(str.indexOf(startFragment)
								+ startFragment.length(),
								str.indexOf(endFragment));
					} else {
						result += str.substring(str.indexOf(startFragment)
								+ startFragment.length(), str.length());
				if (str.indexOf(endFragment) != -1) {
					result += str.substring(0, str.indexOf(endFragment));
				if (str.indexOf(base64) != -1) {
					String locationPath = br.readLine();
					locationPath = locationPath.replace(location, "");
					br.readLine();
					String base64Img = br.readLine();
					imgMap.put(locationPath, base64Img);
			result = result.replaceAll("=20", " ").replaceAll("=3D", "=")
					.replaceAll("<IMG", "<img");
			for (String key : imgMap.keySet()) {
				byte[] imgByte = Base64.decode(imgMap.get(key));
				String fileName = Tools.getDateToSEC() + Tools.getThree()
						+ key.substring(key.lastIndexOf("."));
				FileOutputStream imgOut = new FileOutputStream(uploadPath
						+ fileName);
				imgOut.write(imgByte);
				imgOut.close();
				result = result.replace(key, urlPath + fileName);
			// 写入数据库
			ServeRecord sr = new ServeRecord();
			sr.setDate(new Date());
			sr.setContent(result);
			sr.setServeCustomer(((Admin) getSession().get(Constant.ADMIN))
					.getName());
			sr.setCustomerId(customer.getId() + "");
			serveRecordDao.insert(sr);
			state = "okrecord";
		} catch (Exception e) {
			logger.error("CustomerManagerAction.newAddServeRecord", e);
			return ERROR;
		} finally {
			try {
				if (null != br) {
					br.close();
				if (null != r) {
					r.close();
			} catch (IOException e) {
				logger.error(
						"CustomerManagerAction.newAddServeRecord[close] error!",
				return ERROR;
		return SUCCESS;
                    其实这个功能的总思路是 包所有的QQ聊天记录和旺旺的聊天记录先拷贝到word,让word把图片进行base64的加密,切记word保存时候的格式是mht的比如我保存了一份聊天记录,用notepad++打开可以看到在          标签内容才是你拷贝的内容图片后面的src是content-Location后面的字符后面我们就是解析了public Str
				
第30章 项目实战2:开发Java版QQ2006聊天工具 上一章开发的PetStore宠物商店项目没涉及到多线程和网络通信,本章介绍的QQ2006聊天工具会涉及到这方面的技术。 本章介绍Java SE技术实现的QQ2006聊天工具项目,所涉及到的知识点:Java面向对象、Lambda表达式、Java Swing技术、多线程技术和网络通信等知识,其中还会用到方方面面的Java基础知识。 30.1 系统分析与设计 本节对QQ2006聊天工具项目分析和设计,其中设计过程包括原型设计、数据库设计和系统设计。
QQ 空间在 2005 年被腾讯开发,已经经历了 15 个年头,在还没有微信的年代,看网友发表的心情、心事、照片大多都在 QQ 空间的里。它承载了80、90 后的大量青春,下面我们一起用 selenium 模块导出说说和相册回忆青春吧 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:
一、使用工具 这里用到的是wireshark这个网络抓包工具,还有winhex这个十六进制编辑器,附上下载地址 wireshark:https://www.wireshark.org/download.html winhex:https://www.downbank.cn/s/47836.htm 二、操作流程 下载安装好工具以后,打开wireshark 我们可以看到这里有很多接口,我用的是WiFi上网,那
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
<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" c
本人因项目需要,要做报表,项目初步用flex做,我还是应届生,连flex是什么东西都不知道,坑爹的,我花了大概一天的时间,完成flex和服务器的交互 首先要知道flex是做面的美化的,flex与服务器交互有2个组件,一是httpservice 还有一个是remoteobject。 下面我把我的第一个flex程序交给大家,我会把我在做这个demo的时候碰到的问题向大家说 No appenders could be found for logger (io.netty.util.internal.InternalThreadLocalMap). 普通网友: 写的很好,细节很到位!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】 IoTDB查询结果自动补值 树欲静而风不止: https://www.bookstack.cn/read/iotdb-1.2-en/45e9c1432e574c80.md#%3Ccode%3EFILL%3C/code%3E%20CLAUSE 没用最新版本,查了资料1.2.X支持 IoTDB查询结果自动补值 m0_67388033: 最新版本,是不是不支持这种语法 IoTDB查询结果自动补值 树欲静而风不止: 0.10.X IoTDB查询结果自动补值 m0_67388033: 这个是哪个版本得啊