首页 > 编程语言 >JAVA下载图片压缩zip

JAVA下载图片压缩zip

时间:2023-04-24 18:00:25浏览次数:37  
标签:zipName JAVA zip annex 压缩 new response out

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());
}

标签:zipName,JAVA,zip,annex,压缩,new,response,out
From: https://www.cnblogs.com/df-blog/p/17350362.html

相关文章

  • python zipfile解压文件出现中文乱码
    解压文件首先要在编写代码的开头通过import关键字来调用zipfile,再用with开头的命令来处理需要解压的文件。解决乱码情况可以通过自己创建文件夹的方式来解决,先创建一个自己的解压目录,为了区分是文件还是文件夹要获取文件大小,再把解码方式为cp437变成gbk,再对文件进行拼接,示例如下:......
  • WebSphere Message Broker -JavaCompute组件的使用
      IBMWebSphereMessageBrokerJavaCompute节点的使用. importjava.util.List;importcom.ibm.broker.javacompute.MbJavaComputeNode;importcom.ibm.broker.plugin.*;publicclassSub_FFN_JavaComputeextendsMbJavaComputeNode{ privatefinalArticleCreator......
  • 【Linux】yum安装Java环境,并配置环境变量
    查看系统是否安装过javayumlistinstalled|grepjava如果有旧版本的java,且你自己不需要,可以用如下方法卸载所有的java(后边的*符号是通配符)yum-yremovejava-1.8.0-openjdk*查看java软件包列表yumlistjava*注意​ 这里一定要安装openjdk的开发版本(......
  • Java-基础篇
    1:Java背景知识Java是美国sun公司(StanfordUniversityNetwork)在1995年推出的一门计算机高级编程语言。Java早期称为Oak(橡树),后期改名为Java。Java之父:詹姆斯·高斯林(JamesGosling)。2009年sun公司被Oracle公司收购2:Java技术体系3:Java安装验证JDK安装成功的......
  • Java 泛型
    Java泛型需要搞个服务从Excel里读取数据转化为实体类,再转发到其他平台。读取的数据有车辆数据和电池数据,就想着一个接口搞个泛型,读取不同数据的服务按照类型实现接口就行了,但一开始没整明白。List<?>和List<T>List<?>List<?>是一个无限定通配符类型的列表,也被称为“类......
  • Java的final修饰符
    final实例域可以将实例域定义为final。对于final域来说,构建对象时必须初始化final实例域,构造对象之后就不允许改变final实例域的值了。也就是说,必须确保在每一个构造器执行之后,final实例域的值被设置,并且在后面的操作中,不能够再对final实例域进行修改。例如,可以将Em......
  • javaIO之随机读写
    javaIO包提供了很多可以读写文件的类,但是如果想在文件的指定位置读写,就需要使用RandomAccessFilepublicclassApp{publicstaticvoidmain(String[]args)throwsIOException{{Strings1="ggg\n";Strings2="ggg,hhh\n";......
  • java中排序的正确用法
    publicclassTest{publicstaticvoidmain(String[]args){sort();}publicstaticvoidsort(){List<Integer>list=newArrayList();//降序hitRule.sort((o1,o2)->o2.compareTo(o1));//升序......
  • JAVA学习笔记随记1(类与对象)
    首先说明,这是为了学习java而做的笔记,所以记起来可能杂乱无章,无所谓了,刚开始学习都是这样的。。。首先小结下String的知识点String可以直接声明并赋初值并可以修改,例如:Stringabc="a";abc="b";其次字符串之间的连接用'+',只要出现字符串和其他数据类型之间用'+'连接,那么该......
  • java token自定义实现
    importcom.example.newsmanager.model.Token;importjavax.servlet.http.Cookie;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassTokenUtil{publicstaticfinalStringTOKEN_NAME="token&......