@Override
public void exportCertificate( HttpServletRequest request, HttpServletResponse response) {
try {
//根据自己需求查询组装文件路径
List list = ArrayList();
list.add("文件路径1");
list.add("文件路径2")
//.....
response.setHeader("Content-Disposition", "attachment;filename=" + new String("压缩包文件名称.zip".getBytes("GB2312"), "ISO-8859-1")); // 需要编码否则中文乱码
response.setContentType("application/zip;charset=utf-8");
response.setCharacterEncoding("UTF-8");
// 输出流直接用ZipOutputStream包裹,这样直接输出压缩后的流。减少服务器生成压缩文件步骤。
ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream());
if(list!=null && list.size()>0){
for(String v:list){
//判断是否为空
if(StringUtils.isNotEmpty(v)){
File file=new File(s);
//判断文件是否存在
if(file.exists()){
//压缩包里面的文件名
ZipEntry zipEntryXtv = new ZipEntry(file.getName());
zipOutputStream.putNextEntry(zipEntryXtv);
//将当前文件写入压缩包中
FileInputStream IN = new FileInputStream(file);
BufferedInputStream bins = new BufferedInputStream(IN, 512);
int nNumber;
byte[] buffer = new byte[512];
//写入压缩包中
while ((nNumber = bins.read(buffer)) != -1) {
zipOutputStream.write(buffer, 0, nNumber);
}
bins.close();
IN.close();
}
}
}
}
zipOutputStream.close();
}catch (Exception e){
log.info("报错:"+e.getMessage());
}
}