/**
* 批量下载
*/
public static void batchDownLoad(HttpServletResponse response, HttpServletRequest request, List<String> urlList, String packageName) {
String templatePath = ConstantsContext.getOaFileSaveBasePath();
log.info("batchDownLoad templatePath :" + templatePath);
//生成打包下载后的zip文件:Papers.zip
String papersZipName = OrderUtil.createOrderNum(new Date()) + ".zip";
//zip文件保存路径
String zipPath = "";
zipPath = templatePath + File.separator + papersZipName;
try {
@Cleanup
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipPath));
for (String url : urlList) {
//获取文件名称
String fileName = url.substring(url.lastIndexOf("/") + 1);
out.putNextEntry(new ZipEntry(fileName));
//写入压缩包
HttpResponse httpResponse = HttpRequest.get(url)
.execute();
byte[] bytes = httpResponse.bodyBytes();
out.write(bytes);
}
} catch (Exception e) {
e.printStackTrace();
}
try {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/zip;charset=utf-8");
String userAgent = request.getHeader("User-Agent").toUpperCase();//获取浏览器名(IE/Chome/firefox)
if (userAgent.contains("CHROME")) {
packageName = new String(packageName.getBytes("UTF-8"), "ISO8859-1");// 谷歌
} else if ((userAgent.contains("FIREFOX"))) {
packageName = new String(packageName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器
} else if (userAgent.contains("MSIE")) {
// IE浏览器
packageName = URLEncoder.encode(packageName, "UTF-8");// IE浏览器
// packageName = new String(packageName.getBytes("ISO8859-1"), "UTF-8");
} else if (userAgent.contains("TRIDENT")) {
// ie
packageName = URLEncoder.encode(packageName, "UTF-8");// IE浏览器
}
response.setHeader("Content-Disposition", "attachment;filename=" + packageName + ".zip");
//开始下载
@Cleanup
BufferedInputStream is = new BufferedInputStream(new FileInputStream(new File(zipPath)));
@Cleanup
BufferedOutputStream outt = new BufferedOutputStream(response.getOutputStream());
// deviceCamera/test
byte[] buff = new byte[1024];
int lenn = 0;
while ((lenn = is.read(buff, 0, buff.length)) != -1) {
outt.write(buff, 0, lenn);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
File file = new File(zipPath);
file.delete();
}
}
文件名字 空格变 “+” 处理
URLEncoder.encode("文件名", "utf-8").replace("+","%20");