首页 > 基础资料 博客日记
使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载
2023-07-24 16:11:26基础资料围观651次
本篇文章分享使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
使用hutool工具对多文件进行打包压缩并下载
需求
工作中遇到需要将详情页面数据导出为word,同时详情中有图片和附件,由于附件没法写入到word中(可能是自己没有找到对应的解决办法) , 故将需要导出的word文件,和附件一同打包成zip,进行下载
实现
共两个步骤
- 使用hutool对多文件打包
- 下载
下载方法 FileUtils中的方法
/**
* 下载ZIP压缩包(会对下载后的压缩包进行删除)
*
* @param file zip压缩包文件
* @param response 响应
*/
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_44848900/article/details/125838828
文章来源:https://blog.csdn.net/weixin_44684303/article/details/128723675
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: