如何在SPring引导中将字节数组转换为zip文件



我需要将数组字节转换为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的文件。

最新更新