SpringBoot实现文件压缩处理详解
更新时间:2024年11月14日 08:20:23 作者:[奋斗]
在工作我们经常会出现有多个文件,为了节省资源会将多个文件放在一起进行压缩处理,本文将使用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实现文件压缩处理详解的文章就介绍到这了,更多相关SpringBoot文件压缩内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
RestTemplate发送get和post请求,下载文件的实例
这篇文章主要介绍了RestTemplate发送get和post请求,下载文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-09-09
最新评论