Spring Boot整合批量文件下载功能
导语
在测试功能中,出现了再Spring Boot中打包压缩文件的需求,下面来实现一个这个操作
/*** 批量下载文件** @param request* @param response*/@GetMapping("/qcodeExcept")public void qcodeExcept(HttpServletRequest request, HttpServletResponse response) {//响应头的设置response.reset();response.setCharacterEncoding("utf-8");response.setContentType("multipart/form-data");//设置压缩包的名字String dates = "测试";String billname = "附件包-" + dates;String downloadName = billname + ".zip";//返回客户端浏览器的版本号、类型String agent = request.getHeader("USER-AGENT");try {//针对IE或者以IE为内核的浏览器:if (agent.contains("MSIE") || agent.contains("Trident")) {downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");} else {//非IE浏览器的处理:downloadName = new String(downloadName.getBytes("UTF-8"), "ISO-8859-1");}} catch (Exception e) {e.printStackTrace();}response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");//设置压缩流:直接写入response,实现边压缩边下载ZipOutputStream zipos = null;try {zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法} catch (Exception e) {e.printStackTrace();}//循环将文件写入压缩流DataOutputStream os = null;//查询数据库获取文件信息JcHouseBaseInfo jcHouseBaseInfo = getJcHouseBaseInfo();List<JcHouseBaseInfo> list = jcHouseBaseInfoService.selectJcHouseBaseInfoList(jcHouseBaseInfo);//遍历文件信息(主要获取文件名/文件路径等)for (JcHouseBaseInfo authAttachmentDetail : list) {//文件路径String filePath = RuoYiConfig.getQrcodeUrl() + File.separator + authAttachmentDetail.getQcodePath();System.out.println("filePath===" + filePath);File file = new File(filePath);if (!file.exists()) {throw new BusinessException("文件已不存在");} else {try {//添加ZipEntry,并ZipEntry中写入文件流String fileName = authAttachmentDetail.getTeam() + "-" + authAttachmentDetail.getQcodePath();//.substring(0,authAttachmentDetail.getFileName().indexOf("."));zipos.putNextEntry(new ZipEntry(fileName));os = new DataOutputStream(zipos);InputStream is = new FileInputStream(file);byte[] b = new byte[100];int length = 0;while ((length = is.read(b)) != -1) {os.write(b, 0, length);}is.close();zipos.closeEntry();} catch (IOException e) {e.printStackTrace();}}}//关闭流try {os.flush();os.close();zipos.close();} catch (IOException e) {e.printStackTrace();}}
Spring Boot整合批量文件下载功能相关推荐
- 【SpringBoot学习】28、Spring Boot 整合 TKMybatis 通用 Mapper
文章目录 Spring Boot 整合 TKMybatis 自定义父类接口 新增接口 新增之后回显 Id 更新 删除 单查询 查询列表 计数 条件构造器 技术分享区 Spring Boot 整合 TK ...
- 大聪明教你学Java | Spring Boot 整合 Redis 实现访问量统计
前言 之前开发系统的时候客户提到了一个需求:需要统计某些页面的访问量,记得当时还纠结了一阵子,不知道怎么去实现这个功能,后来还是在大佬的带领下借助 Redis 实现了这个功能.今天又回想起了这件事,正 ...
- spring boot 整合 阿里云oss上传
Spring Boot 整合 阿里云OSS上传 OSS申请和配置 1. 注册登录 2.开通以及配置 springboot整合使用 1. 进入我们springboot的项目中,导入oss相关依赖 2. ...
- Spring Boot整合elasticsearch实现全文检索
文章目录 1.引入 1.1 Luence 1.2 Solr 1.3 ElasticSearch 2. ElasticSearch安装 2.1 云服务器安装 2.1.1. docker安装 2.1.2 ...
- spring boot整合spring security笔记
最近自己做了一个小项目,正在进行springboot和spring Security的整合,有一丢丢的感悟,在这里分享一下: 首先,spring boot整合spring security最好是使用T ...
- 五、spring boot整合mybatis-plus
spring boot整合mybatis-plus 简介 mybatis 增强工具包,简化 CRUD 操作. 文档 http://mp.baomidou.com http://mybatis.plus ...
- spring boot 整合mybatis 无法输出sql的问题
使用spring boot整合mybatis,测试功能的时候,遇到到了sql问题,想要从日志上看哪里错了,但是怎么都无法输出执行的sql,我使用的是log4j2,百度了一下,很多博客都说,加上下面的日 ...
- springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA
今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...
- java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板
点击"牧码小子"关注,和众多大牛一起成长! 关注后,后台回复 java ,领取松哥为你精心准备的技术干货! 虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在 ...
最新文章
- ELK不香了?企业级日志平台后起之秀 Graylog
- 开源工程师:Ubuntu 应该抛弃 32 位 ISO 镜像
- SpringSecurity案例之认证服务security配置
- python父进程调用子进程_Python2.7下,调用subprocess启动子进程,读取子进程标准输出若干问题...
- 763 Hex Conversion
- 在MSF中怎么区分易混淆的工作项类型:Bug、风险和问题(我个人的理解)
- mysql 5.7 not null_mysql5.7基础 select...where...is not null 查找不为NULL的内容
- Kafka单节点多broker的部署和使用
- Linux下抓包工具tcpdump以及分析包的工具wireshark
- 在WPF TreeView中使用复选框
- openresty nginx php,diy 你的nginx-OpenResty
- 05_DecisionTree_统计学习方法
- html/js/css资源
- 【《Real-Time Rendering 3rd》 提炼总结】(十) 第十一章 · 非真实感渲染(NPR)相关技术总结
- 807. 区间求和(acwing水题记)
- 互联网运营面试题_产品运营面试常见问题
- 全球首推语音定制产品,百度地图背后的语音技术到底有多强大?
- MySQL基础学习2
- 云计算的三国演义!华为云、阿里云、腾讯云B端市场策略全解读
- 微信小程序 wx.request 的封装