/*** 合同批量下载* * @return*/@RequestMapping(value = "/cloudSign/downAll.htm", method = RequestMethod.POST)public void downLoadAll(HttpServletRequest request, HttpServletResponse response) {String cloudSignContract = request.getParameter("cloudSignContractVo");List<CloudSignContractVo> list = JSON.parseArray(cloudSignContract, CloudSignContractVo.class);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd-HH:mm:ss");String dateFormat = sdf.format(new Date());String name = "";String realZipName = "";String zipName = dateFormat+"_协议" + ".zip";String agent = request.getHeader("User-Agent"); // 获得浏览器头信息realZipName = nameEncodeChanged(agent, zipName);ZipOutputStream zipos = null;DataOutputStream os = null;try {response.setContentType("multipart/form-data");   response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition", "attachment; filename=" + realZipName);zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));zipos.setMethod(ZipOutputStream.DEFLATED);// 设置压缩方法} catch (Exception e) {e.printStackTrace();logger.error("realZipName encodeed failed error :" + e);}for (int i = 0; i < list.size(); i++) {try {URL url = new URL(list.get(i).getUrl());InputStream is = url.openStream();name = list.get(i).getMemberName() + "_" + list.get(i).getMemberId() + ".pdf";zipos.putNextEntry(new ZipEntry(name));zipos.setEncoding("GBK");os = new DataOutputStream(zipos);byte[] b = new byte[1024];int length = 0;while ((length = is.read(b)) != -1) {os.write(b, 0, length);}is.close();zipos.closeEntry();} catch (Exception e) {e.printStackTrace();logger.error("contract download failed error :" + e);}}try {os.flush();os.close();zipos.close();} catch (IOException e) {e.printStackTrace();logger.error("zipos close error :" + e);}}/*** 根据请求头类型判断浏览器类型,并对字符串选择编码* * @param agent    请求头* @param fileName 文件名称* @return 编码正确的文件名* @throws UnsupportedEncodingException*/public String nameEncodeChanged(String agent, String fileName) {String realZipName = "";try {if (agent.contains("MSIE") || agent.contains("Trident")) { // IErealZipName = URLEncoder.encode(fileName, "UTF-8");} else {realZipName = new String(fileName.getBytes("utf-8"), "ISO8859-1"); // 其他}} catch (UnsupportedEncodingException e) {e.printStackTrace();logger.error("nameEncodeChanged character error" + e);}return realZipName;}

  

转载于:https://www.cnblogs.com/sunyangCoder/p/9370728.html

javaweb文件压缩下载相关推荐

  1. java实现下载压缩文件_java实现文件压缩下载----压缩下载zip

    文件压缩下载 Controller层: /** *文件压缩下载 *billname:文件名 *filename:文件存放路径 */ public void downloadsource(HttpSer ...

  2. 批量文件压缩下载(zip)

    ps:工作之余仅留备份用,未全面完善,请按需取用 一.主要关注两点:1.找到文件并压缩:2.通过文件输出流响应前端 @RestController @RequestMapping("/fil ...

  3. Java多文件压缩下载解决方案

    Java多文件压缩下载解决方案 需求: 会员运营平台经过改版后页面增加了许多全部下载链接,上周上线比较仓促,全部下载是一个直接下载ZIP压缩文件的链接,每个ZIP压缩文件都是由公司运营人员将页面需要下 ...

  4. php excel模板导出、openoffice excel转pdf、多文件压缩下载

    最近两周都在弄关于excel模板导出.excel转pdf.多文件压缩下载.弄得头都大了,接下来说说实现的方法吧. 我用的是laravel5.1的框架,读取模板生成excel,并且插入图片,直接上代码 ...

  5. java实现文件压缩下载----压缩下载zip

    文件压缩下载 Controller层: /** *文件压缩下载 *billname:文件名 *filename:文件存放路径 */ public void downloadsource(HttpSer ...

  6. java实现文件压缩下载

    文件压缩下载 package com.ruoyi.utils; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.uti ...

  7. Nodejs做后端,实现文件压缩下载的几种方案(archiver、compressing、linux的zip命令):

    一. Archiver 1. 安装 npm install archiver 2. 使用 由于需要做文件操作,所以我们需要将fs库也引进来 先创建一个可写流,用于传入压缩包数据 再创建一个archiv ...

  8. 调用cmd方法,用于网盘文件压缩下载

    cmd = cmd.Trim().TrimEnd('&') + "&exit";//说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时 ...

  9. SpringBoot实现多文件压缩下载.zip

    前言:服务器生成多个文本文件.需要打包一次返回下载.例如:xml,word,excel try {response.setHeader("Content-Disposition", ...

  10. java web 实现多个文件压缩下载

    文件下载时,我们可能需要一次下载多个文件.批量下载文件时,需要将多个文件打包为zip,然后再下载.实现思路有两种:一是将所有文件先打包压缩为一个文件,然后下载这个压缩包,二是一边压缩一边下载,将多个文 ...

最新文章

  1. Android SDK 路径修改
  2. 公告三大“罪状”,无人驾驶公司Roadstar联合创始人被罢免
  3. ROS之py文件权限
  4. 轻松易懂的缓存雪崩、穿透、击穿以及解决方案
  5. java能传地址吗,详解java的值传递、地址传递、引用传递
  6. MAGENTO MOUDLE WEB FRONTEND
  7. C语言实现单例模式,以及使用内存屏障的性能优化方案
  8. linux硬盘检测工具,linux 系统下磁盘检测工具e2fsck的使用
  9. Bailian4117 简单的整数划分问题【整数划分+记忆化递归】
  10. wireshark win7无响应
  11. 群消息已读回执(这个diao),究竟是推还是拉?
  12. maxscript rollout
  13. 第十三届蓝桥杯大赛软件赛省赛(Java 大学C组)
  14. 外网如何连接学校服务器
  15. Android仿微信拍摄、录制视频,以及视频播放(基于JCameraView和GSYVideoPlayer)
  16. properties配置文件中 不能输入中文
  17. FLV科普10 FLV视频头信息
  18. Wikioi 1261 龙王的礼物
  19. EMC测试项及解决方案
  20. python项目报告书_python项目

热门文章

  1. Markdown制作表格
  2. 白话使用zookeeper作为注册中心搭建微服务
  3. Java IO 系统(一)
  4. hibernate教程笔记2
  5. 目标检测面试问题非极大值抑制
  6. Caffe学习:Loss
  7. 计算机科学技术专业词汇,计算机专业一些单词
  8. Cmax最优但∑Ci不一定最优 例子
  9. C++ 传递指针给函数
  10. 区块容量 以太坊 比特币