SpringBoot将文件打包成zip存放或导出
目录
- 前言
- 环境准备
- 将文件打包成Zip存放
- 代码
- 测试
- 将文件打包成zip并导出
- 代码
- 测试
- 结尾
前言
相信各位看官在工作中都会遇到过要把多个文件打包成一个压缩文件然后导出,或者将文件打包成Zip存放,这就来上代码,废话不多说。
环境准备
其实也没什么准备,准备好Springboot就行,还有几张图片:
将文件打包成Zip存放
代码
Controller代码:
@RequestMapping("/zip")
@RestController
public class ZipController {/*** 将文件打包成zip并存放在特定位置*/@PostMapping("package")public void packageFileToZip() throws IOException {// 为了方便我直接将文件地址写好了,各位可以根据自己的情况修改String[] filePath = new String[]{"E:\\ykds\\1068128498917799516.jpg", "E:\\ykds\\1068128498917917980.jpg", "E:\\ykds\\1068128498917807874.jpg"};// 将需要打包的文件都放在一个集合中List<File> fileList = new ArrayList<>();for (String s : filePath) {File file = new File(s);fileList.add(file);}// 先在D盘创建一个压缩包File zipFile = new File("D:\\package.zip");if(!zipFile.exists())zipFile.createNewFile();// 将package.zip的File对象传到toZip对象中ZipUtils.toZip(fileList, zipFile);}
}
ZipUTils工具类代码
public class ZipUtils {/*** 把文件集合打成zip压缩包* @param srcFiles 压缩文件集合* @param zipFile zip文件名* @throws RuntimeException 异常*/public static void toZip(List<File> srcFiles, File zipFile) throws IOException {if(zipFile == null){return;}if(!zipFile.getName().endsWith(".zip")){return;}ZipOutputStream zos = null;FileOutputStream out = new FileOutputStream(zipFile);try {zos = new ZipOutputStream(out);for (File srcFile : srcFiles) {byte[] buf = new byte[BUFFER_SIZE];zos.putNextEntry(new ZipEntry(srcFile.getName()));int len;// 读取文件并写入到zip中FileInputStream in = new FileInputStream(srcFile);while ((len = in.read(buf)) != -1) {zos.write(buf, 0, len);zos.flush();}in.close();}} catch (Exception e) {e.printStackTrace();}finally {if (zos != null) {zos.close();}}}
}
测试
代码打好了,接下来测试下,打开熟悉的postman:
调用接口后就会在D盘中新建一个package.zip的压缩包:
可以看到,我打包的文件都在这里,再看看能不能正常显示:
very good!
将文件打包成zip并导出
上面的方法只是将压缩包保存在本地,如果需要导出的话代码有点不一样。
代码
Controller代码:
/*** 将文件打包成zip并下载*/@PostMapping("download")public void download(HttpServletResponse response) throws IOException {// 这里还是和上面一样String[] filePath = new String[]{"E:\\ykds\\1068128498917799516.jpg", "E:\\ykds\\1068128498917917980.jpg", "E:\\ykds\\1068128498917807874.jpg"};List<File> fileList = new ArrayList<>();for (String s : filePath) {File file = new File(s);fileList.add(file);}response.setHeader("content-type", "application/octet-stream");response.setContentType("application/octet-stream");response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=download.zip");ZipUtils.downloadZip(response.getOutputStream(), fileList);}
ZipUtils工具类代码
public static void downloadZip(OutputStream outputStream, List<File> fileList){BufferedInputStream bufferedInputStream = null;ZipOutputStream zipOutputStream = null;try {zipOutputStream = new ZipOutputStream(outputStream);for (File file : fileList) {ZipEntry zipEntry = new ZipEntry(file.getName());zipOutputStream.putNextEntry(zipEntry);byte[] buf = new byte[BUFFER_SIZE];int len;FileInputStream in = new FileInputStream(file);while ((len = in.read(buf)) != -1) {zipOutputStream.write(buf, 0, len);zipOutputStream.flush();}}zipOutputStream.flush();zipOutputStream.close();} catch (IOException e) {e.printStackTrace();} finally {// 关闭流try {if (bufferedInputStream != null) {bufferedInputStream.close();}if (zipOutputStream != null ) {zipOutputStream.close();}if (outputStream != null) {outputStream.close();}} catch (IOException e) {e.printStackTrace();}}}
测试
还是用postman:
下载完成后打开看看
very good!
结尾
zip的分享就到这里啦,各位喜欢的话可以点个赞哦!
SpringBoot将文件打包成zip存放或导出相关推荐
- python打包zip文件_python 解压文件,合并文件 打包成zip格式文件 生成MD5值
#!/usr/bin/env python #_*_encoding:utf-8 # 2018/05/29 #augustyang #2.0 ''' 解压文件,合并文件 打包成zip格式文件 生成MD ...
- 文件打包成zip类型文件
研究了一下,如何把文件打包成Zip文件. 下面是我经历的进程: 1. 首先看到了微软本身的打包代码,是通过System.IO.Packaging 命令空间来进行打包,你可以点击以上的链接来查看其如何打 ...
- 关于springmvc下服务器文件打包成zip格式下载功能
关于springmvc下服务器文件打包成zip格式下载功能 2016年09月21日 11:22:14 toxic_guantou 阅读数:5731更多 个人分类: 技术点存储 版权声明:本文为博主原创 ...
- think.class.php下载,PHP_ThinkPHP实现将本地文件打包成zip下载,首先,将FileToZip.class文件放到T - phpStudy...
ThinkPHP实现将本地文件打包成zip下载 首先,将FileToZip.class文件放到ThinkPHP/Extend/Library/ORG/Util/文件夹中,FileToZip.class ...
- java 文件流的处理 文件打包成zip
1.下载文件到本地 public void download(HttpServletResponse response){String filePath ="";//文件路径Str ...
- java 把文件打包成zip_java 文件流的处理 文件打包成zip
1.下载文件到本地 public void download(HttpServletResponse response){ String filePath ="";//文件路径 S ...
- Java将多个文件打包成ZIP并下载
Java将多个文件打包成ZIP并下载 需求是多个文件需要同时打包成zip压缩文件并下载到本地,首先我需要的是知道下载文件的路径.我有一个专门的sys_file_info表,表中有对应的文件路径.业务表 ...
- php 生成zip并下载,PHP 实现文件打包成zip格式并下载
PHP 文件打包并下载 有个这样的需求,将多个文件打包成zip格式并下载到本地 可根据 ZipArchive这个类来实现此功能 我自己也研究了一下,然后把搞出来了 ,经测试绝对好用 话不多说直接上代码 ...
- 将文件打包成zip包
参考:http://brushupo.i.sohu.com/blog/view/161729800.htm zip下载代码: package com.util;import java.io.Buffe ...
最新文章
- tableau应用实战案例(二)-TABLEAU调用中国地图和Python获取地址的经纬度
- 第一个DNN 模块PictureGallery已经完成
- 【转】嵌入式产品开发流程
- 【优雅代码】深入浅出 妙用Javascript中apply、call、bind
- [react] 什么是React.forwardRef?它有什么作用?
- SpringBoot—单元测试模板(controller层和service层)
- 操作系统--用户级线程和内核级线程
- asp.net 通过ajax方式调用webmethod方法使用自定义类传参及获取返回参数
- 代码管理仓库项目任务计划
- [asp.net控件]asp.net页面传值汇总
- XAMPP 找不到对象,Error 404
- 桌面计算机系统安装系统文件,电脑重装系统后还原桌面文件步骤
- UG二次开发UFUN C NXOpen C++全套视频教程
- excel 选择一个单元格,所在行列变色
- 离散数学自反闭包对称闭包传递闭包C语言代码实现
- 怎么开发支付宝扫码收款应用-java 支付宝当面付
- 路由器的两种工作模式~~~
- 老游戏《皇帝龙之崛起》修改最大建筑数到8000
- 华硕p9d服务器主板什么系统,华硕服务器主板P9D-V
- python打造记账本_python实现日常记账本小程序
热门文章
- 这名 “捡垃圾” 的程序员火了!,竟然年入60万美金?
- QT CREATOR出现no Qt platform plugin问题
- TAG-9F10 发卡行相关数据(转)
- QT当中的【QSetting和.ini配置文件】以及【创建Resources.qrc】
- 成都大数据培训之log4j slf4j 需要注意的地方
- shell 免杀aspx_webshell免杀套路
- wireMock伪造请求结果
- 最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析
- 基于Fitnesse的验收测试实验
- 性能测试监控搭建:redis监控(grafana+Prometheus+redis_exporter)