在工作上回遇到很多需要进行文件批量下载的需求,将多个文件合并成一个zip压缩包进行下载
之前也是参考了其他大佬的博客才有个人使用的总结 在此表示感谢
直接上代码

/*** req 请求头 * response 返回体* fileInfoList 文件信息集合*/public void downForZip(HttpServletRequest req, HttpServletResponse response,List<FileInfo> fileInfoList) {// 创建临时文件File zipFile = null;FileInputStream fis = null;BufferedInputStream buff = null;try {//临时文件名称zipFile = File.createTempFile("test", ".zip");FileOutputStream fot = new FileOutputStream(zipFile);// 为任何OutputStream产生校验,第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型 (Adler32(较快)和CRC32两种)CheckedOutputStream cos = new CheckedOutputStream(fot, new Adler32());// 用于将数据压缩成Zip文件格式ZipOutputStream zos = new ZipOutputStream(cos);for (FileInfo file: fileInfoList) {//根据文件信息获取输入流。这个看实际的业务目的就是获取当前文件的输入流InputStream inputStream = fileService.getFileInpuStream(file.getId(), file.getKey());if (null == inputStream) {break;}// 对于每一个要被存放到压缩包的文件,都必须调用ZipOutputStream对象的putNextEntry()方法,确保压缩包里面文件不同名//多个文件名称重复时zos.putNextEntry()会报错!! 可以再文件名称后面加编号等操作zos.putNextEntry(new ZipEntry(file.getFileName()));int bytesRead = 0;// 向压缩文件中输出数据while ((bytesRead = inputStream.read()) != -1) {zos.write(bytesRead);}inputStream.close();// 当前文件写完,写入下一个文件zos.closeEntry();}zos.close();ServletOutputStream os = response.getOutputStream();//下载文件,使用spring框架中的FileCopyUtils工具response.setCharacterEncoding("GB2312");response.setContentType(req.getSession().getServletContext().getMimeType(file.getFileName()));//设置响应头,attachment表示以附件的形式下载,inline表示在线打开response.setHeader("content-disposition", "attachment;fileName=" + URLEncoder.encode("批量下载.zip", "UTF-8"));fis = new FileInputStream(zipFile);buff = new BufferedInputStream(fis);FileCopyUtils.copy(buff, os);} catch (Exception e1) {throw new BusinessException("批量下载失败");// 关闭流} finally {try {if (null != fis) {fis.close();}if (null != buff) {buff.close();}} catch (IOException e) {log.error( "流关闭异常");}// 删除临时文件if (null != zipFile) {zipFile.delete();}}}

java实现多文件批量下载总结相关推荐

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

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

  2. java文件批量下载打包成zip

    1.首先html页面获取当前需要下载文件的id集合将转成字符串形式传递到后台. ................ 2 .下面就是获取字符串之后的批量下载/*** 多文件批量下载压缩成zip**root ...

  3. Java的class文件批量反编译成Java文件

    Java的class文件批量反编译成java文件 Class文件是java文件编译后产生的一个文件,class文件便于在软件上运行,但是我们无法阅读中间的程序,所以我们需要将class文件转换成jav ...

  4. 多文件批量下载打包成.zip

    多文件批量下载打包成.zip //下载文件打包成zip压缩包@GetMapping("/zip/{id}")public void zip(@PathVariable(" ...

  5. 亿彩文件批量下载器 v3.0

    简介: 亿彩文件批量下载器,主要用于对已知的网络文件的Url,将其批量下载到本地上,并根据需要自动更名下载后的文件,功能丰富强大;支撑大容量几十万几百万条的下载,支持特殊网址的导入,支持保留网络路径结 ...

  6. JavaScript (mp3、mp4、jpg、doc、txt、rar)单个、多文件批量下载

    JavaScript 多文件下载 HTML5中 a 标签新增了一个属性 download,一般情况下,用户点击a链接浏览器会打开对应的链接地址,如果链接地址是一个文件如(xxx.rar.xxx.jpg ...

  7. react——利用jszip实现文件批量下载并打包成zip文件

    本文章主要记录利用jszip实现文件批量下载图片,文档.mp3,视频(MP4)等文件,一般而言前端实现下载功能一般都是通过a链,这在下载单个文件的场景很实用,但如果是批量下载很多个文件,同样也可以用a ...

  8. 文件批量下载方法 文件批量下载工具

    软件版本:Internet Download Manager 在当今数字化时代,我们日常使用电脑进行各种工作和娱乐活动.有时候,我们需要从互联网上下载大量文件,例如电影.音乐.文档等.在这种情况下,手 ...

  9. c# 多线程多文件批量下载

    https://www.cnblogs.com/jianzhan/p/7137485.html c# 多线程多文件批量下载 废话少说,先演示一张效果图 简单说下过程喽 开发过程中其实总是会碰到项目想应 ...

  10. Java实现文件批量下载,打包成zip压缩包

       最近在做一个管理系统的项目,需要实现一个功能,就是批量下载文件,并打包成zip压缩包.    前端通过POST请求传来要下载的文件列表,Java代码实现如下: import java.io.Bu ...

最新文章

  1. Windows开发环境搭建(安装 VS2010, VS2013, VS2015 Community, Windows Server 2008 R2)
  2. python里的关键字有哪些_Python中的yield关键字做了什么?
  3. 从宝马与京东携手,透视汽车后市场变革
  4. 移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”
  5. 经典C语言程序100例之四八
  6. Hbase的WebUI中的RegionServers不显示集群机器域名
  7. 中断底半部:softirq、tasklet、workqueue
  8. 解决IE6透明PNG图片的代码
  9. 用 State Pattern 来实现一个简单的 状态机
  10. 什么?你竟然还没有用这几个chrome插件? 1
  11. mysql 亿级高并发_亿级流量系统架构之如何设计每秒十万查询的高并发架构.md
  12. bnx2: Can't load firmware file bnx2/bnx2-mips-09-6.2.1b.fw
  13. Ubuntu18.04误删分区表,无法挂载U盘解决
  14. 斐讯K1、K2、K2P 刷机、刷入Breed@重庆网吧电竞酒店维护小哥
  15. SqlServer存储过程详解
  16. Java 构造函数的详解
  17. 一步一步学Silverlight 2系列(30):使用Transform实现更炫的效果(下)
  18. 元子弹老师-吉他指弹右手技巧
  19. 网页设计的秘诀:如何用颜色烘托情感
  20. android读写删file,Android文件(File)操作

热门文章

  1. autoCAD恐吓式销售_恐吓式软文的例子 恐吓式软文营销案例分享
  2. Centos 8 安装 Openbravo 之安装 httpd mod_jk
  3. 在eclipse部署OpenBravo项目
  4. python上机考试题库_易考吧-2021年无纸化考试专用全国计算机等级考试上机考试题库:二级Python(含二级公共基础知识)...
  5. matlab fft 采样点数,MATLAB中的FFT的采样频率和采样点怎样确定
  6. wincap安装内幕
  7. vue v-for循环表格 希望第四个<th>或<td>标签自动换到下一行应该怎么做?
  8. 【beyong-sms】一款支持多家短信服务商优美的PHP短信发送库
  9. Beyong Compare 4 提示 “这个授权已被吊销” 的解决办法
  10. 732 我的日程安排表 III(差分思想)