springboot将文件处理成压缩文件

news/2024/11/13 15:04:05/文章来源:https://www.cnblogs.com/songweipeng/p/18543941

前言

在工作我们经常会出现有多个文件,为了节省资源会将多个文件放在一起进行压缩处理;为了让大家进一步了解我先将springboot处理的方法总结如下,有不到之处敬请大家批评指正!

一、文件准备:

https://qnsc.oss-cn-beijing.aliyuncs.com/crmebimage/public/product/2024/11/12/be353210028a3da732c8ba34073fb4ca.jpeg
https://qnsc.oss-cn-beijing.aliyuncs.com/crmebimage/public/product/2024/11/13/5bbf579109db2641249deab4be4340f6.jpeg
https://qnsc.oss-cn-beijing.aliyuncs.com/crmebimage/public/product/2024/11/13/1808773678128361474.xlsx

二、处理步骤:

1.创建一个springboot web项目 这一步在此省略.....

2.需要的方法及类的编写

(1)业务方法-TestService
public interface TestService {void compressFiles(List<String> fileUrls, HttpServletResponse response);
}
(2)业务方法实现类-TestServiceImpl
@Service
@Slf4j
public class TestServiceImpl implements TestService {@Overridepublic void compressFiles(List<String> fileUrls, HttpServletResponse response) {try (ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) {for (String fileUrl : fileUrls) {// 1.从网络下载文件并写入 ZIPtry {URL url = new URL(fileUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.connect();// 2.检查响应码if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {throw new IOException("Failed to download file: " + fileUrl);}// 3.从 URL 中提取文件名String pathStr = fileUrl.substring(fileUrl.lastIndexOf('/') + 1);// 4.创建 ZIP 条目ZipEntry zipEntry = new ZipEntry(pathStr);zipOut.putNextEntry(zipEntry);// 5.读取文件的输入流try (InputStream inputStream = new BufferedInputStream(connection.getInputStream())) {byte[] buffer = new byte[1024];int length;while ((length = inputStream.read(buffer)) >= 0) {zipOut.write(buffer, 0, length);}}zipOut.closeEntry();} catch (IOException e) {log.error("Error processing file URL: " + fileUrl, e);throw new RuntimeException(e);}}
       // 6.响应信息设置处理response.setContentType(
"application/octet-stream");response.setHeader("Content-Disposition", "attachment;filename=test.zip");response.flushBuffer();} catch (IOException e) {log.error("Error compressing files", e);throw new RuntimeException(e);}} }
(3)控制器类的编写-TestController
/*** @Project:* @Description:* @author: songwp* @Date: 2024/11/13 14:50**/
@RequestMapping("test")
@RestController
@Slf4j
public class TestController {@Autowiredprivate TestService testService;/*** 文件压缩** @param fileUrls 要压缩的文件 URL 列表* @param response 响应对象*/@GetMapping("/fileToZip")public void zip(@RequestParam("fileUrls") List<String> fileUrls, HttpServletResponse response) {testService.compressFiles(fileUrls, response);}
}

三、方法调用展示

 (1)存放到桌面

 (2)解压response.zip文件

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832977.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CMDB平台(进阶篇):CMDB的构建指南(一)

CMDB(配置管理数据库)的构建是一个复杂而细致的过程,其中组建项目团队和定义项目是至关重要的初始阶段。以下是根据高权威性来源整理的,关于这两个阶段的详细指南: 一、组建项目团队 团队角色与技能: 选择的团队必须具备相应的技能、经验、知识去解释、设计和实施一个CMD…

出差及报销问题

出差问题 报销问题 一、提交报销申请提交报销申请在应用导航的 ERP门户系统 中,选择我要报账在保障服务平台--单据管理--全部单据里选择--差旅费报账单(新)报销申请单填写选择想要报销的出差审批单上传想要报销的发票后点击下一步填写基本信息影像张数: 上传附件图片数量。…

职场效率倍增!学会这6个任务管理法则轻松完成工作

身处职场,我们每个人都在日复一日的工作中面对着不断增加的任务清单。如何有效管理、合理分配、确保准时交付,成了现代职场人最常面临的挑战之一。如果管理不当,不仅影响个人效率,整个团队也可能因此陷入无休止的混乱与低效。经过几年的职场摸索,我总结出了一些应对繁杂任…

烟火检测视频分析网关算法网关智慧工厂安全生产视频监管方案

在数字化时代,企业转型升级已成为实现可持续发展的必由之路。特别是在工业领域,工厂的智能化转型不仅能够提高生产效率,还能加强安全管理,确保员工的健康与安全。TSINGSEE青犀AI智能分析网关V4与安防监控视频管理系统EasyCVR视频融合平台的结合,为工厂提供了一个实现智能化…

nginx代理minio集群的websocket问题,求解决!!!

1.问题描述 nginx代理minio集群,web控制台浏览buckets下的列表一直在loading..., 不使用nginx代理地址,通过minio集群直接访问是没有问题的 从报错来看是websocket连接失败问题,按照官方文档以及其他博主的方式都配置了,仍未解决!!!!!2.minio镜像版本:minio/minio:RE…

nginx代理minio的websocket问题,求解决!!!

1.问题描述 nginx代理minio集群,web控制台浏览buckets下的列表一直在loading...,目前来看是websocket的问题,安装官方文档和其他博主的方式都配置了,仍未解决!!!!!2.minio镜像版本:minio/minio:RELEASE.2024-11-07T00-52-20Z3.nginx版本1.20.24.nginx配置[root@minio-…

GitLab 如何降级?

本分分享 GitLab 降级的流程和注意事项。极狐GitLab 为 GitLab 的中文发行版,本文以私有化部署的极狐GitLab 为例来演示整个过程。 【极狐GitLab 推出 GitLab 老旧版本的专业升级服务,可以让 12.x、13.x、14.x、15.x 等老旧版本的升级平滑不出问题】 首先确定当前的版本信息,…

希音面试:亿级用户 日活 月活,如何统计?(史上最强 HyperLogLog 解读)

本文原文链接 文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 …

【JetBrains CLion 2024软件下载与安装教程】

1、安装包 CLion2024: 链接:https://pan.quark.cn/s/ed93e8cb245e 提取码:fhwc CLion Pro 2021: 链接:https://pan.quark.cn/s/30927a3da509 提取码:1t2w CLion Pro 2018: 链接:https://pan.quark.cn/s/f3a7af5e8ca6 提取码:PW1E 2、安装教程(建议关闭杀毒软件) 1) …

团队项目Scrum冲刺-day2

一、每天举行站立式会议 站立式会议照片一张昨天已完成的工作成员 任务陈国金 用户模块的部分接口开发凌枫 登录页面陈卓恒 管理题目页面的部分代码谭立业 题目搜索页面的部分代码廖俊龙 接口测试曾平凡 前端页面测试曾俊涛 题目模块的部分接口开发薛秋昊 题目提交模块的部分接…

33 张高清大图,带你玩转 KubeSphere 4.1.2 部署与扩展组件安装

备受瞩目的 KubeSphere 4.1.2 已经正式官宣发布,该版本带来了一个重大优化:增加默认的扩展组件仓库。 这一优化改进,让采用全新的 KubeSphere LuBan 架构的 KubeSphere,真正实现了自由打造高度可扩展和可配置的云原生底座。 KubeSphere 用户仅需要在 K8s 之上,默认安装清爽…

cmu15545-数据访问方式:B+树(B+Tree)

目录基本概念基于磁盘的B+树查询与索引设计选择结点大小(Node Size)合并阈值(Merge Thredshold)变长键(Variable-length Keys)结点内部搜索(Intra-Node Search)优化手段Pointer SwizzlingBε-treesBulk InsertPrefix CompressionDeduplicationSuffix Truncation 基本概…