JAVA实现文件批量打包下载
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实现文件批量打包下载相关推荐
- 阿里云OSS文件批量打包下载
阿里云OSS文件批量打包下载 public void downloadReport(List<String> fileNames,HttpServletResponse response) ...
- java文件下载功能代码(单文件下载、多文件批量打包下载)——普遍适用
一.前言 程序员在做web等项目的时候,往往都需要添加文件上传.下载.删除的功能,有时是单文件,有时多文件批量 操作,而这些功能的代码程序员可以自己收藏起来当成工具使用,这样,程序员在进行程序设计 ...
- ASP.NET多文件批量打包下载
在项目实施中,遇到了将多个文件一起打包后,提供给用户下载.如:在一个ASP.NET的开发项目中,通过一个GridView选中对应行数据的CheckBox,就可以实现对选中文件的打包下载了. 在对多文件 ...
- Java后台文件批量压缩下载
最近遇到一个需求,要求设计批量下载功能,即点击按钮即可将勾选的文件全部打包成压缩包,批量下载下来. 页面如下,勾选对应的复选框,点击批量下载按钮,即可将复选框对应的附件批量压缩成一个zip压缩包,然后 ...
- springboot+oss文件批量打包下载
1 默认项目已经配置并连接成功OSS客户端 @Resource private OSSClient ossClient; 2 具体实现代码 public void batchDownLoadFile( ...
- 【java】 文件批量下载并压缩为zip压缩包
[java] 文件批量下载并压缩为zip压缩包 java常用的压缩技术 java中常见实现压缩与解压 业务场景 代码实现 注意点 java常用的压缩技术 常见的压缩格式有很多种,例如:zip.rar. ...
- PHP使用ZipArchive对文件进行批量打包下载
PHP使用ZipArchive对文件进行批量打包下载 话不多说直接上图 DEMO 代码示例 <?php$file = $_GET['file'];//文件判断,无文件阻止if(!$file){e ...
- vue中实现文件批量打包压缩下载(以及下载跨域问题分析)
上次做了一个选择多个数据生成多个二维码并下载,当时项目催的紧,就简单写了个循环生成二维码下载,一次性会下载很多文件,特别难整理: 刚好这次项目又遇到类似这种功能,需要一次性批量下载多个文件,那么就安排 ...
- C# 用zip,批量压缩文件,并打包下载
C# 用zip,批量压缩文件,并打包下载,无需产生临时文件,二种都可以 using ICSharpCode.SharpZipLib.Checksums; using ICSharpCode.Sharp ...
最新文章
- opencv中的Rodrigues()函数
- 【Paper】2013_基于一致性理论的无人机编队控制器设计_郭伟强
- 【Python】35个经典案例:吃透Python中的if条件语句~
- Xavier上的第一个I2C驱动
- SSH实现进销存(ERP)项目之订单管理模块解析(附源码地址)
- linux 双网卡bond命令,Linux的双网卡绑定(即bond0)
- 【java学习之路】(java框架)005.mybatis框架整合及逆向工厂
- excel数据分组存到一个excel的多个sheet中
- 超出本地计算机网络,超出本地计算机网络适配器卡的名称限制怎么解决?
- Fabric开发(三) Ubuntu20.04.1快速搭建Fabric1.4.3 (排雷版)
- 故事板(StoryBoards)和动画(Animations)
- 西南大学网络教育行政管理计算机答案,西南大学网络教育1056计算机基础春考试大作业答案.doc...
- Hibernate Session.get()和Session.laod()的区别
- 深度优先搜索-迷宫问题
- Angular8简单方式实现表格固定表头和冻结列
- 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc
- ES初探之——shard和replica
- 对话本体创始人李俊——有关IEO、DApp、区块链游戏的一些冷思考
- IB课程必修课TOK到底有啥用?
- bootstrap开发tab选项卡事例