public void downloadFileBatch(String[] filePaths, HttpServletResponse response){
try {
// 创建 ZipOutputStream
ZipOutputStream zipOutputStream = null;
// 创建 FileInputStream 对象
FileInputStream fileInputStream = null;
// 实例化 ZipOutputStream 对象
zipOutputStream = new ZipOutputStream(response.getOutputStream());
// 创建 ZipEntry 对象
ZipEntry zipEntry = null;
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName='aaa.zip'");
for (String filePath: filePaths){
File file = new File(filePath);
if (!file.exists()) {
return;
}
// 将源文件数组中的当前文件读入 FileInputStream 流中
fileInputStream = new FileInputStream(file);
// 实例化 ZipEntry 对象,源文件数组中的当前文件
zipEntry = new ZipEntry(file.getName());
zipOutputStream.putNextEntry(zipEntry);
// 该变量记录每次真正读的字节个数
int len;
// 定义每次读取的字节数组
byte[] buffer = new byte[1024];
while ((len = fileInputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, len);
}
}
zipOutputStream.closeEntry();
zipOutputStream.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}