栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java之文件上传后需要修复问题(Doc文档,Excel文档等)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java之文件上传后需要修复问题(Doc文档,Excel文档等)

文件上传 问题代码:

文档需要修复原因:因为此处错误代码是每次读取1024个字节都写入1024个字节,但是不可能每次都读取到1024个字节,这里却每次都写入1024个字节,虽然文档修复后没有什么缺少,但是用代码去解析文档的时候去会造成问题。

byte[] bts = new byte[1024];
// 一个一个字节的读取并写入
while (is.read(bts) != -1) {
	os.write(bts);
}
正确代码

每次读多少字节就写多少字节即可。

byte[] bts = new byte[1024];
int len = 0;
while((len = is.read(bts)) >0){
	os.write(bts, 0, len);
}
完成代码
	@RequestMapping("fileUpload")
	@ResponseBody
	public Map fileUpload(@RequestParam("file") MultipartFile file, HttpServletRequest request)
			throws IOException {
		Map map = new HashMap<>();
		try {
			String path = request.getSession().getServletContext().getRealPath("/") + file.getOriginalFilename();
			// 获取输出流
			OutputStream os = new FileOutputStream(path);
			// 获取输入流 CommonsMultipartFile 中可以直接得到文件的流
			InputStream is = file.getInputStream();
			byte[] bts = new byte[1024];
			// 一个一个字节的读取并写入
			

			int len = 0;
			while((len = is.read(bts)) >0){
				os.write(bts, 0, len);
			}

			os.flush();
			os.close();
			is.close();
			map.put("success", true);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			map.put("success", false);
		}
		return map;
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号