我需要将数组字节转换为zip文件。但我的输出是一个空的zip文件。我不明白。
我从这里得到帮助
我的代码是:
String resultBase64 = reportApplicationService.fetchReportExcel(...);
if (resultBase64 != null) {
byte[] excel = base64.decode( resultBase64 );
ZipInputStream z = new ZipInputStream(new ByteArrayInputStream(excel));
int length;
while ((length = z.read(excel)) > 0) {
zip.write(excel, 0, length);
}
zip.closeEntry();
zip.finish();
z.close();
zip.close();
outputStream.flush();
response.setHeader("Content-Disposition", "attachment; filename=name.zip");
response.setContentType("application/zip");
response.setContentLength((int) outputStream.size());
StreamUtils.copy(new ByteArrayInputStream(outputStream.toByteArray()), response.getOutputStream());
}
z.read(excel)
是-1
感谢
我在这里找到它。我更改了代码:
result = reportApplicationService.fetchReportExcel(id, periodId, compareId1, compareId2, branches);
if (result != null) {
byte[] excel = base64.decode( result );
ZipEntry entry = new ZipEntry("z.xls");
entry.setSize(excel.length);
zip.putNextEntry(entry);
zip.write(excel);
zip.closeEntry();
zip.close();
outputStream.flush();
response.setHeader("Content-Disposition", "attachment; filename=name.zip");
response.setContentType("application/zip");
response.setContentLength((int) outputStream.size());
StreamUtils.copy(new ByteArrayInputStream(outputStream.toByteArray()), response.getOutputStream());
}
在name.zip
中创建一个名为z.xls
的文件。