JAVA下载图片压缩zip

1. 支持多张图片下载

/**
* 下载附件zip
*/
@PostMapping("downloadZip")
public void downloadZip(@RequestBody ShipmentAnnexVo shipmentAnnexVo, HttpServletRequest request, HttpServletResponse response) {
shipmentAnnexService.downloadZip(shipmentAnnexVo, request, response);
}

2. serviceImpl实现逻辑
// zip文件名
String zipName = DateUtil.getNowDateYMDHMS();

try {
// 创建zip输出流,输出到客户端
ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
zipName = URLEncoder.encode(zipName, "UTF-8");

response.reset();
response.setCharacterEncoding("UTF-8");
// 不同类型的文件对应不同的MIME类型
response.setContentType("application/octet-stream");
// inline在浏览器中直接显示,不提示用户下载
// attachment弹出对话框,提示用户进行下载保存本地
// 默认为inline方式
response.setHeader("Content-Disposition", "attachment;filename=" + zipName);

for (ShipmentAnnex annex : annexList) {
InputStream in = tencentMinioManage.get(bucketName, annex.getAnnexFileName());
String fileName = annex.getOriginFileName().contains(".") ? annex.getOriginFileName() : annex.getOriginFileName() + ".jpg";
out.putNextEntry(new ZipEntry(fileName));

int len;
byte[] buf = new byte[4096];
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
out.closeEntry();
in.close();
}
out.close();

} catch (Exception e) {
throw new BusinessException("下载ZIP异常!" + e.getMessage());
}
posted @   美宰可#F22  阅读(220)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示