springboot将文件处理成压缩文件
前言
在工作我们经常会出现有多个文件,为了节省资源会将多个文件放在一起进行压缩处理;为了让大家进一步了解我先将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 { @Override
public void compressFiles(List<String> fileUrls, HttpServletResponse response) {
try (ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) {
for (String fileUrl : fileUrls) {
// 1.从网络下载文件并写入 ZIP
try {
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 { @Autowired
private 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文件
springboot将文件处理成压缩文件的更多相关文章
- 使用宏批量将多个csv文件转成excel文件
在一个压缩文件中有100多个csv文件,要求要将此100多个csv文件转成excel文件,名字命名不变,有三种方式: 1. 傻不拉几的复制粘贴法 2. 一个一个打开csv文件,另存为xls文件,工作量 ...
- [python]自动化将markdown文件转成html文件
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- java 压缩文件 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件
/** * 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件 * * @param files * 文件数组 * @param strZipName * 压缩文件路径及文件名 * @thr ...
- [转载]webarchive文件转换成htm文件
原文地址:webarchive文件转换成htm文件作者:xhbaxf Mac OS X系统带有文件转换功能,可以把webarchive文件变成html文件.方法是: Step 1: 建立一个文件夹 ...
- 自制 Python小工具 将markdown文件转换成Html文件
今天看到了一个Python库,名为markdown.瞬间就给了我一个灵感,那就是制作一个将markdown文件转换成html文件的小工具. 我的实验环境 操作系统: Windows 7 64位 旗舰版 ...
- C#.NET常见问题(FAQ)-如何将cs文件编译成dll文件 exe文件 如何调用dll文件
比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...
- 将 Python3 文件打包成 exe 文件
我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,P ...
- 用gulp把less文件编译成css文件
第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...
- C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件
比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...
- 在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性
在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性 Maven 项目生成jar运行时提示“没有主清单属性” 新建了一个Maven的项目,mvn compile和mvn packag ...
随机推荐
- 导出 LaTeX 为 SVG
LaTeX 本身并不直接支持导出 SVG 格式的文档或图片,但可以通过一些工具和插件实现将 LaTeX 文档或图形转换为 SVG 格式. 使用 dvisvgm 我们可以先将 LaTeX 文档编译为 D ...
- 调用微信红包接口,本地可以服务器不可以。 请求被中止: 未能创建 SSL/TLS 安全通道
微信红包的地址接口地址是: https://api.mch.weixin.qq.com/pay/micropay 当时造成这个不能用的原因是:我把服务器从windows server 2008升级到w ...
- Redis 入门 - 图形化管理工具如何选择,最全分类
工欲善其事必先利其器,上一章Redis服务环境已经搭建完成,现在就需要一个趁手的工具,有个好工具可以做到事半功倍. Redis图形化管理工具五花八门,可供选择的很多,大家可以根据自己的需求应用场景进行 ...
- java基础 -线程(基础)的 笔记
581,多线程机制 因为需要敌人的坦克可以自由移动并发射子弹,我们的坦克可以移动并发射子弹,这些要用到线程的知识. 根据JConsole监控线程执行情况,发现,主线程执行完了,子线程还没有执行完,并不 ...
- git 批量删除本地分支及远程分支
git 批量删除本地分支及远程分支 一.批量删除本地分支 git branch |grep 'name' |xargs git branch -D 备注: name 为需要匹配的分支名称 二.批量删除 ...
- Vs Code, Visual Studio 2022, Angular and Live Server Running Through Https and IP Address
前言 之前就写过 angular cli, vs code liveserver, vs 2019 iis express 10, vs code kestrel 使用 https + ip. 但写的 ...
- DQL—查询操作
一.查询语法 select 字段列表 from 表名列表 where 条件列表 group by 分组列表 having 分组后条件 order by 排序字段 limit 分页限定 (提供一个表来操 ...
- ChatGPT转发工具-springboot
背景 国内服务器无法访问openAI接口,我想过有两种实现方式 代理工具类似 tinyproxy.nginx 开发一个转发客户端(java.python都可以实现),提供一个api接口 源码 gith ...
- IDEA如何自动导入依赖的jar包
前言 我们在使用IDEA开发时,会引入第三方的jar包,这些第三方的jar包使我们可以快速的使用别人开发好的功能,而不用重复造轮子了. 这大大提高了我们的开发效率. 但是,有时候我们一下子需要导入太多 ...
- 向量法求 T3 这个若智 r^2
int sqr_vector_dis(node a){ return a.x*a.x+a.y*a.y; } frac vector_multi(node a,node b){ return frac( ...