SpringBoot文件夹压缩下载实现示例

/*** 压缩文件夹并下载** @param map* @param response* @throws IOException*/public static void exportCompareFile(Map<String, String> map, HttpServletResponse response) throws IOException {StringBuilder tempFilePath = new StringBuilder("C:\\export\\compare").append(File.separator).append(System.nanoTime()).append(File.separator);String filePath = tempFilePath.toString();log.error("===>导出对比生成文件: {}", tempFilePath.toString());String fileNameZip = "导出物模型对比" + ".zip";List<File> files = new LinkedList<>();for (String key : map.keySet()) {boolean flag = IotCreateJsonFileUtil.createJsonFile(map.get(key), filePath, key + ".json");log.warn("===>FileUtils#exportCompareFile调用生成Json文件工具返回:" + flag);files.add(new File(filePath + key + ".json"));}// 注意,如果压缩文件名称在文件夹下已存在,则只替换压缩包内部同名文件,需要调用者保证压缩包名唯一或者文件夹唯一new ZipFile(filePath + File.separator + "导出物模型对比" + ".zip").addFiles(files);/*** response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(fileName,"UTF-8")),*/response.setHeader("content-type", "multipart/form-data");response.setContentType("application/force-download");response.setContentType("application/binary;charset=UTF-8");response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileNameZip, "UTF-8"));response.setHeader("Pragma", "no-cache");response.setHeader("Cache-Control", "no-cache");response.setDateHeader("Expires", 0);byte[] buff = new byte[1024];//创建缓冲输入流BufferedInputStream bis = null;OutputStream outputStream = null;try {outputStream = response.getOutputStream();//这个路径为待下载文件的路径filePath = filePath + fileNameZip;log.info("压缩文件路径: filePath = {}", filePath);bis = new BufferedInputStream(new FileInputStream(new File(filePath)));int read = bis.read(buff);// 通过while循环写入到指定了的文件中while (read != -1) {outputStream.write(buff, 0, buff.length);outputStream.flush();read = bis.read(buff);}} catch (IOException e) {e.printStackTrace();} finally {if (bis != null) {try {bis.close();} catch (IOException e) {e.printStackTrace();}}if (outputStream != null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();//出现异常返回给页面失败的信息} finally {if (bis != null) {try {bis.close();} catch (IOException e) {e.printStackTrace();}}if (outputStream != null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}}}}}

SpringBoot文件夹压缩下载实现示例相关推荐

  1. 文件及文件夹 压缩 下载

    使用压缩下载需要用到两个工具类 ZipUtil ,IOUtil 直接导入即可 1.方法 //附件下载@Override@Transactionalpublic Result<Object> ...

  2. 多文件批量压缩下载,单文件夹压缩下载

    现有一个新需求,用户可选择多个文件,多文件批量压缩下载,由于传统的代码效率不高,网上查询资料,对部分内容进行了修改与整合,特此留档 以下的工具类能实现的内容有: 1:将多个文件放在一个文件夹中压缩下载 ...

  3. php打包压缩下载多大,php多文件打包压缩下载简单示例

    调用php中内置扩展ZipArchive类可以进行文件压缩打包下载,(PHP 5>=5.2.0,PHP 7,PECL zip>=1.1.0) 调用php中内置扩展ZipArchive类可以 ...

  4. Java将网络图片下载至文件夹,然后将文件夹压缩成zip

    思路: 第一步.创建一个文件夹A,用来存图片 第二步.将图片转为图片流写入文件夹A 第三步.将文件夹压缩成ZIP 下面上代码 public class FileZipUtils {public sta ...

  5. Java实现将文件或者文件夹压缩成zip

    Java实现将文件或者文件夹压缩成zip 最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类. 这个工具类的功 ...

  6. springboot文件上传下载实战 ——文件上传、下载、在线打开、删除

    springboot文件上传下载实战 文件上传 文件上传核心 UserFileController 文件上传测试 文件下载与在线打开 文件下载.在线打开核心 UserFileController 文件 ...

  7. springboot文件上传下载实战 —— 登录功能、展示所有文件

    springboot文件上传下载实战 创建项目 pom.xml 数据库建表与环境准备 建表SQL 配置文件 application.properties 整体架构 前端页面 登录页面 login.ht ...

  8. java 压缩文件tar_使用Java API进行tar.gz文件及文件夹压缩解压缩

    在java(JDK)中我们可以使用ZipOutputStream去创建zip压缩文件,(参考我之前写的文章 使用java API进行zip递归压缩文件夹以及解压 ),也可以使用GZIPOutputSt ...

  9. C# 文件/文件夹压缩解压缩

    项目上用到的,随手做个记录,哈哈. 直接上代码: 1 using System; 2 using System.Data; 3 using System.Configuration; 4 using ...

  10. 【Auto.js】[zip压缩] 将文件夹压缩成zip包

    将一个文件夹压缩成一个zip包,可应用于项目文件夹打包成zip, 文件夹过滤了目录中的空文件夹,因此,空文件夹不会被打包到zip包中. 由于本人JS知识有限,JAVA也不懂, 导致该函数, 打包大型文 ...

最新文章

  1. Hibernate映射解析——七种映射关系
  2. python推荐入门书籍-学python入门看什么书
  3. android软件的data使用方法,实例讲解Android中SQLiteDatabase使用方法
  4. 5月19-20日的上海 来一次纯粹的WebRTC之旅
  5. oracle report builder 6i下载,oracle report builder 6i - 数据模型中的SQL查询代码
  6. 信息学奥赛一本通(1159:斐波那契数列)
  7. 1370. 上升下降字符串
  8. 【收藏】这些Python代码技巧,你肯定还不知道
  9. Django在Window下的部署
  10. mysql注入转义绕过_SQL注入防御绕过——二次注入
  11. lisp方格网法计算土方量_CAD计算土方方量插件
  12. 金蝶EAS,序时簿界面去除数据隔离,根据枚举项实现背景色标记,数据排序
  13. 矩形波 matlab,Matlab的方波函数
  14. 申宝股票-大盘缩量调整
  15. s3cmd 快速评估RADOSGW的性能
  16. qt做标定软件_有什么很好的软件是用 Qt 编写的?
  17. Contest 20140914 Mushroom写情书 字符串雙hash 後綴數組
  18. 【乐鑫ESP32】腾讯云平台项目创建以及MQTT协议连接
  19. 自制语言——Timi
  20. 中科院刘康:低资源环境下的事件知识抽取

热门文章

  1. OSChina 周二乱弹 —— 基于现代生物化学的长生不老药炼制教程
  2. 几种高效电路分析方法
  3. win11+github pages+hexo+aurora主题搭建博客
  4. oracle磁盘满了怎么办,ORACLE磁盘空间占满解决
  5. 【微积分】2.2一元函数积分
  6. html悬浮客服代码,js QQ客服悬浮效果实现代码
  7. 7-1 数组插入元素 (10 分)
  8. 多台机器同步Windows上的文件 -cwRsync 同步问题
  9. unity商店demo学习:俯视视角RPG游戏
  10. easyx游戏编程:魔塔(c++语言开发)源码