使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载 使用hutool工具对多文件进行打包压缩并下载 需求 工作中遇到需要将详情页面数据导出为Word,同时详情中有图片和附件,由于附
使用hutool工具对多文件进行打包压缩并下载
需求
工作中遇到需要将详情页面数据导出为Word,同时详情中有图片和附件,由于附件没法写入到word中(可能是自己没有找到对应的解决办法) , 故将需要导出的word文件,和附件一同打包成zip,进行下载
实现
共两个步骤
1 . 使用hutool对多文件打包
2 .下载
下载方法 FileUtils中的方法
public static void downloadZip(File file, httpservletResponse response) { OutputStream toClient = null; try { // 以流的形式下载文件。 BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file.getPath())); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); toClient = new BufferedOutputStream(response.getOutputStream()); response.setCharacterEncoding("UTF-8"); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); toClient.write(buffer); toClient.flush(); } catch (Exception e) { log.error("下载zip压缩包过程发生异常:", e); } finally { if (toClient != null) { try { toClient.close(); } catch (IOException e) { log.error("zip包下载关流失败:", e); } } //删除改临时zip包(此zip包任何时候都不需要保留,因为源文件随时可以再次进行压缩生成zip包) file.delete(); }}
public void exportWord(@RequestHeader Long projectId,HttpServletResponse response, Long recordId) { try { // 压缩到的位置 File zipFile = new File("D:\\压缩.zip"); // 压缩文件中包含的文件列表,此处为测试代码,实际为自己需要的文件列表 List<File> fileList = CollUtil.newArrayList(); fileList.add(new File("D:\\文件1.doc")); fileList.add(new File("D:\\文件2.xlsx")); // 压缩多个文件,压缩后会将压缩临时文件删除 ZipUtil.zip(zipFile, false, fileList.toArray(new File[fileList.size()])); // 下载 FileUtils.downloadZip(zipFile,response); } catch (Exception e) { logger.error("文件压缩异常",e); } finally { }}
参考:https://blog.csdn.net/weixin_44684303/article/details/128723675
来源地址:https://blog.csdn.net/qq_34228115/article/details/129295900
--结束END--
本文标题: 使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载
本文链接: https://lsjlt.com/news/418453.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0