打包下载oss文件,下载到本地解压缩后,打开查看里面是空白的,有一页是现实无法渲染该页面
相关代码如下
String url;
// 多个文件集合
ArrayList files = new ArrayList<>();
// 根据signId查询签署文档
List signDocumentVOS = signDocumentMapper.selectAttachs(signId);
for (SignDocumentVO signDocumentVO : signDocumentVOS) {
url=signDocumentVO.getLink();
files.add(url);
}
// 配置文件下载
response.setCharacterEncoding("utf-8");
response.setContentType("application/file");
//压缩包文件名
SimpleDateFormat fileZipName = new SimpleDateFormat("yyyyMMddhhmmss");
// 下载文件时候防止显示中文乱码 指定文件类型 .zip
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileZipName.format(new Date()) + ".zip", "UTF-8"));
response.flushBuffer();
ZipUtils.getZipFile(IOUtils.getByte(files), response.getOutputStream(),response);
public static void getZipFile(Mapbyte []> stringByte, OutputStream outputStream, HttpServletResponse response) throws Exception {
//将文件打包成压缩文件
ZipOutputStream zipout = new ZipOutputStream(outputStream);
Set[]>> dataEntrys = stringByte.entrySet();
for (Map.Entry[]> data : dataEntrys) {
InputStream bufferIn = new BufferedInputStream(new ByteArrayInputStream(data.getValue()));
byte[] bs = new byte[1024];
Arrays.fill(bs, (byte) 0);
//创建压缩文件内的文件
zipout.putNextEntry(new ZipEntry(data.getKey()));
int len = 0;
while ((len = bufferIn.read(bs)) > 0) {
zipout.write(bs, 0, len);
zipout.flush();
}
response.flushBuffer();
bufferIn.close();
}
try {
zipout.close();
outputStream.flush();
} catch (IOException e) {
}
}