public WebResponse<Boolean> downloadFileBatch(HttpServletResponse response, HttpServletRequest request, List<String> fileIdList, String loginUserId, String loginUserName) throws IOException {
ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename="+java.net.URLEncoder.encode("打包","UTF-8")+".zip");
int count = 1;
for (String fileId : fileIdList) {
String fileName = fileCenterService.getFilename(fileId, loginUserId);
ResponseEntity<byte[]> respon = fileCenterService.download(fileId, loginUserId, loginUserName);
byte[] result = respon.getBody();
addToZip(new ByteArrayInputStream(result), zipOut, fileName,count);
count++;
zipOut.flush();
response.flushBuffer();
}
zipOut.close();
}
private void addToZip(ByteArrayInputStream is, ZipOutputStream zipOut, String fileName,int count) {
try{
ZipEntry entry = new ZipEntry(count+"."+fileName);
zipOut.putNextEntry(entry);
int len;
byte[] buffer = new byte[1024];
while ((len = is.read(buffer)) > 0) {
zipOut.write(buffer, 0, len);
}
is.close();
zipOut.closeEntry();
}catch (Exception e){
e.printStackTrace();
}
}
文件打包下载
最新推荐文章于 2024-07-29 14:22:26 发布