JAVA实现文件批量打包下载

实现

1.打包工具类的实现

/*** @author zhouxuan* @since 2019/4/19*/
public class ZipUtils {/*** @author zhouxuan* @since 2019/4/19*/
public class ZipUtils {/*** 批量打包** @param jsonString json格式字符串数据* @param fileSaveRootPath 项目根目录* @return zip文件保存绝对路径*/public String createZipAndReturnPath(String jsonString, String fileSaveRootPath) {//生成jsonArray列表JSONArray jsonArray = JSONArray.fromObject(jsonString);try {//生成打包下载后的zip文件:Papers.zipString papersZipName = "Papers.zip";//zip文件保存路径String zipPath = fileSaveRootPath + papersZipName;ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipPath));//遍历jsonArray列表获取所有JSONObject对象for (int i = 0; i < jsonArray.size(); i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);//获得文件相对路径String relativePath = jsonObject.getString("file_Path");//获得文件名String fileName = relativePath.substring(relativePath.lastIndexOf("/")+1);//获得下载文件完整路径String downloadPath = fileSaveRootPath + relativePath;//以论文标题为每个文件命名FileInputStream fis = new FileInputStream(downloadPath);out.putNextEntry(new ZipEntry(fileName));//写入压缩包int len;byte[] buffer = new byte[1024];while ((len = fis.read(buffer)) > 0) {out.write(buffer, 0, len);}out.closeEntry();fis.close();}out.close();out.flush();return zipPath;} catch (Exception e) {e.printStackTrace();}return null;}
}

2.zip文件包的下载

 /*** 批量下载* @param request 请求* @param response 返回*/
public void batchDownloadFiles(HttpServletRequest request,HttpServletResponse response) {//读取前端传来json字段String jsonString = request.getParameter("paperInfo");//获取web项目根目录String fileSaveRootPath = request.getSession().getServletContext().getRealPath("/");//创建zip文件并返回zip文件路径String zipPath = new ZipUtils().createZipAndReturnPath(jsonString, fileSaveRootPath);try {response.reset();response.setCharacterEncoding("UTF-8");response.setContentType("application/zip;charset=utf-8");response.setHeader("Content-Disposition", "attachment;filename=Papers.zip");System.out.println(response.getHeader("Content-Disposition"));//开始下载BufferedInputStream is = new BufferedInputStream(new FileInputStream(new File(zipPath)));BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());byte[] buff = new byte[1024];int len = 0;while ((len = is.read(buff, 0, buff.length)) != -1) {out.write(buff, 0, len);}out.close();out.flush();is.close();} catch (Exception e) {e.printStackTrace();}
}

JAVA实现文件批量打包下载相关推荐

  1. 阿里云OSS文件批量打包下载

    阿里云OSS文件批量打包下载 public void downloadReport(List<String> fileNames,HttpServletResponse response) ...

  2. java文件下载功能代码(单文件下载、多文件批量打包下载)——普遍适用

    一.前言   程序员在做web等项目的时候,往往都需要添加文件上传.下载.删除的功能,有时是单文件,有时多文件批量 操作,而这些功能的代码程序员可以自己收藏起来当成工具使用,这样,程序员在进行程序设计 ...

  3. ASP.NET多文件批量打包下载

    在项目实施中,遇到了将多个文件一起打包后,提供给用户下载.如:在一个ASP.NET的开发项目中,通过一个GridView选中对应行数据的CheckBox,就可以实现对选中文件的打包下载了. 在对多文件 ...

  4. Java后台文件批量压缩下载

    最近遇到一个需求,要求设计批量下载功能,即点击按钮即可将勾选的文件全部打包成压缩包,批量下载下来. 页面如下,勾选对应的复选框,点击批量下载按钮,即可将复选框对应的附件批量压缩成一个zip压缩包,然后 ...

  5. springboot+oss文件批量打包下载

    1 默认项目已经配置并连接成功OSS客户端 @Resource private OSSClient ossClient; 2 具体实现代码 public void batchDownLoadFile( ...

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

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

  7. PHP使用ZipArchive对文件进行批量打包下载

    PHP使用ZipArchive对文件进行批量打包下载 话不多说直接上图 DEMO 代码示例 <?php$file = $_GET['file'];//文件判断,无文件阻止if(!$file){e ...

  8. vue中实现文件批量打包压缩下载(以及下载跨域问题分析)

    上次做了一个选择多个数据生成多个二维码并下载,当时项目催的紧,就简单写了个循环生成二维码下载,一次性会下载很多文件,特别难整理: 刚好这次项目又遇到类似这种功能,需要一次性批量下载多个文件,那么就安排 ...

  9. C# 用zip,批量压缩文件,并打包下载

    C# 用zip,批量压缩文件,并打包下载,无需产生临时文件,二种都可以 using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.Sharp ...

最新文章

  1. opencv中的Rodrigues()函数
  2. 【Paper】2013_基于一致性理论的无人机编队控制器设计_郭伟强
  3. 【Python】35个经典案例:吃透Python中的if条件语句~
  4. Xavier上的第一个I2C驱动
  5. SSH实现进销存(ERP)项目之订单管理模块解析(附源码地址)
  6. linux 双网卡bond命令,Linux的双网卡绑定(即bond0)
  7. 【java学习之路】(java框架)005.mybatis框架整合及逆向工厂
  8. excel数据分组存到一个excel的多个sheet中
  9. 超出本地计算机网络,超出本地计算机网络适配器卡的名称限制怎么解决?
  10. Fabric开发(三) Ubuntu20.04.1快速搭建Fabric1.4.3 (排雷版)
  11. 故事板(StoryBoards)和动画(Animations)
  12. 西南大学网络教育行政管理计算机答案,西南大学网络教育1056计算机基础春考试大作业答案.doc...
  13. Hibernate Session.get()和Session.laod()的区别
  14. 深度优先搜索-迷宫问题
  15. Angular8简单方式实现表格固定表头和冻结列
  16. 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc
  17. ES初探之——shard和replica
  18. 对话本体创始人李俊——有关IEO、DApp、区块链游戏的一些冷思考
  19. IB课程必修课TOK到底有啥用?
  20. bootstrap开发tab选项卡事例

热门文章

  1. 开源WebGIS开发2——开发环境(IntelliJ IDEA)
  2. 《Docker技术入门与实战》——3.8 本章小结
  3. ICC2 CTS STEP
  4. android图片压缩办法总结
  5. 打印1900年到2020年内的所有闰年
  6. 个人理解小波变换及转载小波变换原理
  7. Windows下的geant4的安装和clion的使用
  8. php 半角 全角空格,PHP将全角空格转成半角, 并去除头尾空格
  9. WP手机升级到WP8.1之后一些功能的吐槽和没有Cortana,改变绿色图标的问题的解决方案以及怎样调戏Cortana
  10. strsep() 函数