Java给文件或文件夹打压缩包,Springboot将压缩包传给前端
2021/6/27 14:14:22
本文主要是介绍Java给文件或文件夹打压缩包,Springboot将压缩包传给前端,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
最近写代码需要实现文件和文件夹的打包,然后就发现了zip4j,个人用下来感觉zip4j很好用,再加上发现了个坑,在网上找了半天,发现一堆重复的文章,加上也没人说明这个坑,所以自己写篇文章,做个笔记,如有错误还请指正。
压缩文件或文件夹
首先引入依赖
<dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>1.3.2</version> </dependency>
压缩文件(有坑)
//filePath是你要打包文件夹的路径 public static String creatZipFile(List<String> filePath){ //生成压缩包路径,ZIPPATH是压缩包路径 File zipPath = new File(ZIPPATH); if (!zipPath.exists()) { zipPath.mkdir(); } // 生成的压缩文件,xxx.zip是你生成的压缩文件 ZipFile zipFile = null; try { zipFile = new ZipFile(ZIPPATH + "\\xxx.zip"); ZipParameters parameters = new ZipParameters(); // 压缩方式 //COMP_STORE = 0; 仅打包,不压缩 //COMP_DEFLATE = 8; 默认 //COMP_AES_ENC = 99; 加密压缩 parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 压缩级别 //DEFLATE_LEVEL_FASTEST = 1; 速度最快,压缩比最小 //DEFLATE_LEVEL_FAST = 3; 速度快,压缩比小 //DEFLATE_LEVEL_NORMAL = 5; 一般 //DEFLATE_LEVEL_MAXIMUM = 7; //DEFLATE_LEVEL_ULTRA = 9; parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 要打包的文件夹 for (String path : filePath) { File currentFile = new File(path); zipFile.addFolder(currentFile.getPath(), parameters); } //如果只是打包文件可以用下面这个方法,file是你的文件路径 //zipFile.addFile(file, parameters); } catch (ZipException e) { e.printStackTrace(); return "压缩失败"; } return "压缩成功"; }
坑:要打包多个文件夹一定要用addFolder(),如果用addFile()在添加其他文件夹下的文件时会失败
zip4j还支持加密、解密压缩,文件的删除等,其他功能读者可以自行尝试
附上zip4j官网:http://www.lingala.net/zip4j/
Springboot将压缩包传给前端
控制层
//这里只写一个简单的逻辑 @PostMapping("/download/zip") public String packagerPhoto(HttpServletResponse response){ response.setContentType("application/zip"); response.setCharacterEncoding("utf-8"); //xxx.zip是你压缩包文件名 response.setHeader("Content-Disposition", "attachment;filename=xxx.zip"); //你压缩包路径 String path = "xxx//xxx//xxx.zip"; ZipUtils.downloadZip(response, path); return "下载成功"; }
工具类
public class ZipUtils { public static void downloadZip(HttpServletResponse response, String path){ File file = new File(path); try { ZipFile zipFile = new ZipFile(file); InputStream fis = new FileInputStream(zipFile.getFile()); IOUtils.copy(fis, response.getOutputStream()); fis.close(); }catch (Exception e){ e.printStackTrace(); } if (file.exists()) { file.delete(); } } }
希望对你有帮助
这篇关于Java给文件或文件夹打压缩包,Springboot将压缩包传给前端的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程