首页 > 基础资料 博客日记

使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载

2023-07-24 16:11:26基础资料围观651

本篇文章分享使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识

使用hutool工具对多文件进行打包压缩并下载

需求

工作中遇到需要将详情页面数据导出为word,同时详情中有图片和附件,由于附件没法写入到word中(可能是自己没有找到对应的解决办法) , 故将需要导出的word文件,和附件一同打包成zip,进行下载

实现

共两个步骤

  1. 使用hutool对多文件打包
  2. 下载

下载方法 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进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云