java压缩多个文件到压缩包,并下载到浏览器
解决方法:
完整的方法如下,很简单,亲试有效,极力推荐。
我是以流作为文件,而不是file,循环把所有pdf文件压缩到pdf.zip压缩包中。
1.前端方法
window.open('/downLoadZipFile');
2.后台方法
@ResponseBody
@RequestMapping("/downLoadZipFile")
public void downLoadZipFile(String list,HttpServletRequest request,HttpServletResponse response) throws IOException{
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=pdf.zip");
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(response.getOutputStream())
for(int i=0;i<array1.length;i++) {//array1是循环把文件流添加到压缩包中
InputStream input = genPdf(c_id, fileName);//genPdf方法自己定义,获取文件流
zos.putNextEntry(new ZipEntry(i+".pdf")) ; //压缩文件名称 设置ZipEntry对象
zos.setComment("www.mldnjava.cn") ; // 设置注释
int temp = 0 ;
while((temp=input.read())!=-1){ // 读取内容
zos.write(temp) ; // 压缩输出
}
input.close() ; // 关闭输入流
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭流
try {
if (null != zos){
zos.flush();
zos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}