javaweb文件压缩下载
/*** 合同批量下载* * @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文件压缩下载相关推荐
- java实现下载压缩文件_java实现文件压缩下载----压缩下载zip
文件压缩下载 Controller层: /** *文件压缩下载 *billname:文件名 *filename:文件存放路径 */ public void downloadsource(HttpSer ...
- 批量文件压缩下载(zip)
ps:工作之余仅留备份用,未全面完善,请按需取用 一.主要关注两点:1.找到文件并压缩:2.通过文件输出流响应前端 @RestController @RequestMapping("/fil ...
- Java多文件压缩下载解决方案
Java多文件压缩下载解决方案 需求: 会员运营平台经过改版后页面增加了许多全部下载链接,上周上线比较仓促,全部下载是一个直接下载ZIP压缩文件的链接,每个ZIP压缩文件都是由公司运营人员将页面需要下 ...
- php excel模板导出、openoffice excel转pdf、多文件压缩下载
最近两周都在弄关于excel模板导出.excel转pdf.多文件压缩下载.弄得头都大了,接下来说说实现的方法吧. 我用的是laravel5.1的框架,读取模板生成excel,并且插入图片,直接上代码 ...
- java实现文件压缩下载----压缩下载zip
文件压缩下载 Controller层: /** *文件压缩下载 *billname:文件名 *filename:文件存放路径 */ public void downloadsource(HttpSer ...
- java实现文件压缩下载
文件压缩下载 package com.ruoyi.utils; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.uti ...
- Nodejs做后端,实现文件压缩下载的几种方案(archiver、compressing、linux的zip命令):
一. Archiver 1. 安装 npm install archiver 2. 使用 由于需要做文件操作,所以我们需要将fs库也引进来 先创建一个可写流,用于传入压缩包数据 再创建一个archiv ...
- 调用cmd方法,用于网盘文件压缩下载
cmd = cmd.Trim().TrimEnd('&') + "&exit";//说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时 ...
- SpringBoot实现多文件压缩下载.zip
前言:服务器生成多个文本文件.需要打包一次返回下载.例如:xml,word,excel try {response.setHeader("Content-Disposition", ...
- java web 实现多个文件压缩下载
文件下载时,我们可能需要一次下载多个文件.批量下载文件时,需要将多个文件打包为zip,然后再下载.实现思路有两种:一是将所有文件先打包压缩为一个文件,然后下载这个压缩包,二是一边压缩一边下载,将多个文 ...
最新文章
- Android SDK 路径修改
- 公告三大“罪状”,无人驾驶公司Roadstar联合创始人被罢免
- ROS之py文件权限
- 轻松易懂的缓存雪崩、穿透、击穿以及解决方案
- java能传地址吗,详解java的值传递、地址传递、引用传递
- MAGENTO MOUDLE WEB FRONTEND
- C语言实现单例模式,以及使用内存屏障的性能优化方案
- linux硬盘检测工具,linux 系统下磁盘检测工具e2fsck的使用
- Bailian4117 简单的整数划分问题【整数划分+记忆化递归】
- wireshark win7无响应
- 群消息已读回执(这个diao),究竟是推还是拉?
- maxscript rollout
- 第十三届蓝桥杯大赛软件赛省赛(Java 大学C组)
- 外网如何连接学校服务器
- Android仿微信拍摄、录制视频,以及视频播放(基于JCameraView和GSYVideoPlayer)
- properties配置文件中 不能输入中文
- FLV科普10 FLV视频头信息
- Wikioi 1261 龙王的礼物
- EMC测试项及解决方案
- python项目报告书_python项目