public static void ZipMultiFileDownload(List<String> filepath, List<String> names, HttpServletResponse response, HttpServletRequest request, String downloadName) {try {//响应头的设置
            response.reset();response.setCharacterEncoding("utf-8");response.setContentType("multipart/form-data");//设置压缩包的名字//解决不同浏览器压缩包名字含有中文时乱码的问题String agent = request.getHeader("USER-AGENT");try {if (agent.contains("MSIE") || agent.contains("Trident")) {downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");} else {downloadName = new String(downloadName.getBytes("UTF-8"), "ISO-8859-1");}} catch (Exception e) {e.printStackTrace();}response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");//设置压缩流:直接写入response,实现边压缩边下载ZipOutputStream zipos = null;try {zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法 } catch (Exception e) {e.printStackTrace();}//循环将文件写入压缩流DataOutputStream os = null;for (int i = 0; i < filepath.size(); i++) {try {//添加ZipEntry,并ZipEntry中写入文件流//这里,加上i是防止要下载的文件有重名的导致下载失败zipos.putNextEntry(new ZipEntry(names.get(i)));os = new DataOutputStream(zipos);InputStream is = new FileInputStream(filepath.get(i));byte[] b = new byte[100];int length = 0;while ((length = is.read(b)) != -1) {os.write(b, 0, length);}is.close();zipos.closeEntry();} catch (IOException e) {e.printStackTrace();}}if (os != null) {os.flush();os.close();zipos.close();}} catch (Exception e) {e.printStackTrace();}}

该方法有五个参数 filepath、names、downloadName、response、request,其中filepath代表文件的路径集合,names代表文件名的集合,downloadName代表下载的文件名,response、request用于下载使用

转载于:https://www.cnblogs.com/mingyuan1031/p/11347513.html

压缩下载到浏览器的工具类相关推荐

  1. 简单封装浏览器 cookie 工具类

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...

  2. 学习日志day41(2021-09-03)(1、文件的上传 2、文件的查看 3、文件的下载 4、使用工具类上传文件 5、基于servlet3.0以上的文件上传 )

    学习内容:学习JavaWeb(Day41) 1.文件的上传 2.文件的查看 3.文件的下载 4.使用工具类上传文件 5.基于servlet3.0以上的文件上传 1.文件的上传 (1)实现文件的上传需要 ...

  3. java 导出加密压缩包 设置 压缩包加密密码 并下载 (springboot+文件工具类)

    我们现在要下载一个压缩包文件 并设置密码,密码统一固定 后台部分: @Value("${drap_platform.export_password}")private String ...

  4. ffmpeg的下载及安装JAVA工具类

    这篇文章完全转自(感谢大神): https://blog.csdn.net/qq_33697094/article/details/112718101 https://blog.csdn.net/qq ...

  5. java Itextpdf 图片转pdf并压缩下载至浏览器

    注:图片存放在服务器D盘指定目录下,该目录URL存放于数据库表中 maven项目 jdk1.7 <!-- itextpdf --> <dependency><groupI ...

  6. Java之~ 上传 图片压缩,阿里图片压缩,图片旋转方法工具类

    需要的jar jai_codec-1.1.3.jar,jai_core-1.1.3.jar,simpleimage-1.2.0.jar,metadata-extractor-2.3.1.jar(旋转时 ...

  7. 批量下载网页图片的工具类

    private static String getHtmlResourceByUrl(String url, String encoding) {//存储源代码的容器StringBuffer buff ...

  8. java url类下载_Java根据url下载图片或文件的工具类-Fun言

    package cn.funyan.utils; import java.io.FileOutputStream; import java.io.IOException; import java.io ...

  9. 工具类:(一) java压缩与解压

    工具类:(一) java压缩与解压 本工具类采用的是java.util包下的Deflater进行压缩,以及Inflater进行解压, 适用于程序中需要通过远程接口调用发送或接收数据时: /*** 压缩 ...

  10. Java中操作字符串的工具类-判空、截取、格式化、转换驼峰、转集合和list、是否包含

    场景 某些常用的对字符串进行处理的方法抽离出来成工具类,方便在多处应用. 常用的操作为: 判断是否为空 截取字符串 格式化文本 字符串转set 字符串转list 下划线转驼峰命名 是否包含字符串 注: ...

最新文章

  1. 查看linux机器是32位还是64位的方法
  2. Wix中注册c#开发的Activex控件
  3. Socket 进行发送
  4. Mips TLB miss实现in Linux
  5. centos打显卡驱动命令_在Linux系统下安装Nvidia官方显卡驱动的方法
  6. HarmonyOS常见问题解答
  7. b+树时间复杂度_数据结构:线性表,栈,队列,数组,字符串,树和二叉树,哈希表...
  8. Matlab:*.txt转换为*.mat
  9. 一道微软Python面试题(文末附python教程丶电子书资料分享)
  10. Python:bs4的使用
  11. Ubuntu 安装字体方法
  12. qq空间把android改成iphone,qq空间改iPhone6 Plus方法 qq空间改手机型号教程
  13. 上下调基因和代谢物--不同颜色显示在同一张KEGG通路图中
  14. 悉尼大学计算机录取要求,悉尼大学录取要求
  15. 联合分布(一):什么是概率分布
  16. 【循环自相关和循环谱系列6】信号的循环平稳性(循环自相关函数)基本原理及推导
  17. Python_OpenCV对摄像头图像进行对焦判断
  18. 双电阻差分电流采样_1206 0.35R采样毫欧电阻等规格参数应用详情
  19. 利用TensorFlow搭建CNN,DNN网络实现图像手写识别,总结。
  20. html+css+layui实现简约登录界面

热门文章

  1. 【原创】SM4password算法源代码接口具体解释
  2. Java中异常处理和设计
  3. DailyWallpaper v1.02 released
  4. entity framework 数据库默认时间的问题的一种解决方案
  5. openmv探索_1_helloworld
  6. 【ACL2020】BERT如何融合主题模型做文本匹配
  7. 【面经】关于Transformer,面试官们都怎么问
  8. ACL 2019 | 清华与华为提出ERNIE:知识图谱结合BERT才是「有文化」的语言模型
  9. 2018自然语言处理与机器学习论文发表统计
  10. 每日算法系列【LeetCode 719】找出第 k 小的距离对