@RequestMapping(value = "xxx/xxx",method = RequestMethod.POST )@ResponseBodypublic Map<String,Object> feedBackDirectMultiDownload(HttpServletRequest request,HttpServletResponse response) throws IOException{//压缩文件初始设置String path="压缩文件想要放置的路径";base_name = "zip文件名";fileZip = base_name + ".zip"; // 拼接zip文件filePath = path+"\\" + fileZip;//之后用来生成zip文件//filePathArr为根据前台传过来的信息,通过数据库查询所得出的pdf文件路径集合(具体到后缀),此处省略files = new File[fileNameArr.size()];//for(int i=0;i<fileNameArr.size();i++){files[i]=new File(fileNameArr.get(i).get("filePath"));//获取所有需要下载的pdf}// 创建临时压缩文件try {BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));ZipOutputStream zos = new ZipOutputStream(bos);ZipEntry ze = null;for (int i = 0; i < files.length; i++) {//将所有需要下载的pdf文件都写入临时zip文件BufferedInputStream bis = new BufferedInputStream(new FileInputStream(files[i]));ze = new ZipEntry(files[i].getName());zos.putNextEntry(ze);int s = -1;while ((s = bis.read()) != -1) {zos.write(s);}bis.close();}zos.flush();zos.close();} catch (IOException e) {e.printStackTrace();}//以上,临时压缩文件创建完成//进行浏览器下载       //获得浏览器代理信息final String userAgent = request.getHeader("USER-AGENT");//判断浏览器代理并分别设置响应给浏览器的编码格式String finalFileName = null;if(StringUtils.contains(userAgent, "MSIE")||StringUtils.contains(userAgent,"Trident")){//IE浏览器finalFileName = URLEncoder.encode(fileZip,"UTF8");System.out.println("IE浏览器");}else if(StringUtils.contains(userAgent, "Mozilla")){//google,火狐浏览器finalFileName = new String(fileZip.getBytes(), "ISO8859-1");}else{finalFileName = URLEncoder.encode(fileZip,"UTF8");//其他浏览器}response.setContentType("application/x-download");//告知浏览器下载文件,而不是直接打开,浏览器默认为打开response.setHeader("Content-Disposition" ,"attachment;filename=\"" +finalFileName+ "\"");//下载文件的名称ServletOutputStream servletOutputStream=response.getOutputStream();DataOutputStream temps = new DataOutputStream(servletOutputStream);DataInputStream in = new DataInputStream(new FileInputStream(filePath));//浏览器下载文件的路径byte[] b = new byte[2048];File reportZip=new File(filePath);//之后用来删除临时压缩文件try {while ((in.read(b)) != -1) {temps.write(b);}temps.flush();} catch (Exception e) {e.printStackTrace();}finally{if(temps!=null) temps.close();if(in!=null) in.close();if(reportZip!=null) reportZip.delete();//删除服务器本地产生的临时压缩文件servletOutputStream.close();}return null;        }

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

  1. java后台批量下载文件并压缩成zip下载

    因项目需要,将服务器上的图片文件压缩打包zip,下载到本地桌面. 首先,前端js: function doQueryPic() {var picsDate = $("#picsDate&qu ...

  2. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util;import javax.servlet.http.HttpServletRequest; import ...

  3. Java实现批量下载(打包成zip)

    批量下载 引言 一.前端JS发送下载请求 1.ajax无法发送下载请求 2.js发送下载请求:超链接方式 3.js发送下载请求:拼接Form表单,并提交 二.后台处理 三.结束 引言 批量下载思路,首 ...

  4. java后台Controller下载文件方法

    /*** 导出* @param request* @param response*/@RequestMapping(value="exportInfo")public void e ...

  5. java oss如何下载文件_Java OSS批量下载并压缩为ZIP代码实例

    这篇文章主要介绍了Java OSS批量下载并压缩为ZIP代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 /** * 批量下载为zip * @ ...

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

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

  7. JAVA 批量下载文件

    最近项目有个需求,用户想对挂有附件的数据记录 实现一键下载全部附件(目前项目仅支持每次点击单条记录进行附件下载),下面记录我实现的解决方案. 项目框架基于SSM service业务实现层(impl): ...

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

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

  9. 批量下载文件,打包成zip压缩包

    批量下载文件,用程序打成zip压缩包在下载 前台传来要下载的url数组 @RequestMapping(value = "/download",method = RequestMe ...

最新文章

  1. ABAP:SUBMIT执行其他报表并返回的数据
  2. golang 运算与循环
  3. mysql time_limit_mysql ---- limit使用方式
  4. java仿qq登录 界面设计,Java Swing仿QQ登录界面效果
  5. 95-130-340-源码-source-kafka相关-FlinkKafkaConsumer分析
  6. pycharm关联python ide_Python+Selenium进阶版 (一)- Python IDE工具-PyCharm的安装和使用...
  7. 完成端口中的单句柄数据结构与单IO数据结构的理解与设计
  8. vue better-scroll 下拉上拉,加载刷新
  9. Android-JNI开发系列《三》-异常处理
  10. 利用Python绘制一朵太阳花
  11. git 提交时报错 error: failed to push some refs to ‘https://github.com/xxx/demo.git 解决方法
  12. android uyghur app,‎App Store 上的“Uyghur Quran And Translation”
  13. Oracle 存储过程中自定义异常
  14. 湖州云计算机,湖州云存储服务_菲尔云计算
  15. nginx反向代理非80端口/nginx反代非80端口
  16. Vue3 生命周期Hooks函数与调度器Scheduler的原理
  17. 详解vue路由传参的三种方式
  18. 【计算机网络】读书笔记之《HTTP权威指南》
  19. 万科成都再现欺诈门,业主集体抵制狗洞式入户
  20. 大白话了解TCP协议:经典——三次握手数据传输 四次挥手

热门文章

  1. SAP模块介绍及概念介绍+CRM saleforce学习认证
  2. 有关于tftp32无法下载
  3. 智能ai文章伪原创工具-智能ai文章原创处理系统
  4. 在html 源代码消除消除当前页面的脚本发生错误,当前页面的脚本发生错误
  5. 解决:badboy 提示脚本错误 , 总是提示 “当前页面发生脚本错误”
  6. 2022A特种设备相关管理(电梯)考试题模拟考试题库模拟考试平台操作
  7. MediaCoder CUDA H.264 编码器测试报告
  8. Js什么是暂时性死区
  9. 域名一定需要备案吗?什么情况下不用备案?
  10. iOS 交易支付密码(多种样式选择)~ 封装demo