最近遇到一个需求,要求设计批量下载功能,即点击按钮即可将勾选的文件全部打包成压缩包,批量下载下来。

页面如下,勾选对应的复选框,点击批量下载按钮,即可将复选框对应的附件批量压缩成一个zip压缩包,然后浏览器弹框下载。

前端

// 批量下载
$("#downloadBtn").click(function () {// 获取复选选框对应的IDvar ids = getIds();if (ids == "") {top.layer.msg("请选择要下载的文件!");return false;} else {window.location.href = "${basePath}/abc/defg/fileOut?ids="+ids;}});

后端

// 批量下载文件
@GetMapping("security/standardLibrary/fileOut")
public void fileOut(Integer[] ids){// 根据ids获取对应的文件名和路径,多个用逗号隔开Map<String, String> file = fileService.queryFileListById(ids);// 从查询结果中将文件名通过“,”截取出来,形成数组String[] fileNames = file.get("fileName").split(",");// 从查询结果中将文件路径通过“,”截取出来,形成数组String[] fileUrls = file.get("fileUrl").split(",");// 对文件流进行压缩操作ZipOutputStream zos = null;// 读取文件流BufferedInputStream br = null;try {// 文件的名称String downloadFilename = "批量文件.zip";response.reset();// 设置格式response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(downloadFilename, "UTF-8"));// 初始化压缩流zos = new ZipOutputStream(response.getOutputStream());// 循环下载文件并进行压缩for (int i = 0; i < fileNames.length; i++) {// 设置压缩文件名称zos.putNextEntry(new ZipEntry(fileNames[i]));try{// 获取原文件流,不存在则继续操作br = new BufferedInputStream(new FileInputStream(fileUrls[i]));}catch (FileNotFoundException e1){e1.getMessage();log.error("文件下载错误!文件路径:"+fileUrls[i]);// 当前文件下载错误则跳过继续下载下一个文件continue;}// 按字节依次读取文件并写入压缩流byte[] buffer = new byte[1024];int r = 0;while ((r = br.read(buffer)) != -1) {zos.write(buffer, 0, r);}}// 输出压缩文件流zos.flush();} catch (IOException e) {e.printStackTrace();}finally {try {// 关闭压缩流和文件流if(zos != null){ zos.close(); }if (br != null){ br.close(); }} catch (Exception e) {e.printStackTrace();}}
}

Java后台文件批量压缩下载相关推荐

  1. react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析

    记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...

  2. JAVA实现文件批量打包下载

    JAVA实现文件批量打包下载 实现 1.打包工具类的实现 /*** @author zhouxuan* @since 2019/4/19*/ public class ZipUtils {/*** @ ...

  3. 多文件批量压缩下载,单文件夹压缩下载

    现有一个新需求,用户可选择多个文件,多文件批量压缩下载,由于传统的代码效率不高,网上查询资料,对部分内容进行了修改与整合,特此留档 以下的工具类能实现的内容有: 1:将多个文件放在一个文件夹中压缩下载 ...

  4. java实现文件打包压缩下载接口(附上可实际运行的代码)

    最近在写项目接口,涉及到文件下载.打包压缩下载,单个文件下载还是比较简单的,多文件下载涉及到打包和压缩知识,之前也没做过,写篇博客做个简单的记录一下.闲言少叙,上代码: 如下代码是精简过后的测试代码, ...

  5. java文件流下载excel_React获取Java后台文件流下载Excel文件

    记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...

  6. 【java】 文件批量下载并压缩为zip压缩包

    [java] 文件批量下载并压缩为zip压缩包 java常用的压缩技术 java中常见实现压缩与解压 业务场景 代码实现 注意点 java常用的压缩技术 常见的压缩格式有很多种,例如:zip.rar. ...

  7. vue+ElementUI实现文件的单个下载,以及批量压缩下载

    一.单个文件下载 思路很简单: 当页面加载时,那么下面的href里就会执行downloadFile()这个函数,然后 downloadFile()里面访问后台接口,得到文件流,然后赋值给href属性, ...

  8. C# 将服务器文件批量压缩打包下载至本地两种方法(压缩包缓存到服务器下载、压缩包缓存到内存下载)

    1.将服务器文件打包下载至本地(压缩包缓存到服务器下载) (1)文件批量压缩成压缩包并缓存到服务器(公共方法) using ICSharpCode.SharpZipLib.Checksums; usi ...

  9. centos nfs java_CentOS下安装配置NFS并通过Java进行文件上传下载

    1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...

最新文章

  1. javascript与java的不同之处
  2. 帧中继简单总结(修改)
  3. Spring第一讲:初步了解Spring
  4. SAP云平台的trial账号不具备成员管理的功能
  5. linux将mysql导出表数据导入另一台服务器_远程linux服务器mysql数据库导入和导出.sql文件...
  6. 位、字,字节与KB的关系
  7. 【paper and code】StarGAN
  8. 提高工作效率的软件推荐——我的ABC软件工具箱 6.0 最新版上线啦
  9. php网页代码字体大小,html字体大小怎么设置
  10. 机器视觉测量原理及其优势
  11. java任务监控进度控制
  12. 关于碰到优盘插入电脑检测到病毒并且优盘里文件只显示System Volume Information文件夹的问题解决。
  13. 廖雪峰python教程之python基础
  14. JavaScript中实现键值对的方法
  15. 如何区别劳动合同和劳务派遣合同
  16. word表格怎么缩小上下间距_word表格怎么调整行高间距拉不动
  17. 13.Python中的命名空间是什么
  18. buuctf_Misc-喵喵喵
  19. php 长微博程序,一个简单的长微博生成器
  20. IP RAN和PTN的区别——TFN TT60 综合网络测试仪

热门文章

  1. sendgrid java_store-sendgrid-java-how-to-send-email-example | Microsoft Docs
  2. http-equiv=“X-UA-Compatible“是什么意思?
  3. SpringBoot+OAuth2+Google关联登录
  4. python + selenium + unittest 实现网站登录注册自动化测试
  5. 基于STM32F407的ADC解析-ADC1多通道扫描模式电压采集实验(启用DMA传输数据)
  6. 总结下利用python赚钱的方法,在闲余时间月赚2k-5k
  7. 程序员赚零钱食用指南
  8. 如何在css中设置音乐效果,css实现简单音乐符效果
  9. MOS管的导通过程及损耗分析
  10. 【代码审计-JAVA】javaweb代码审计思路