Hier im Grunde versuche ich, Zip-Datei mit Excel-Tabellen von Server zu Client senden.Generieren In-Memory-Zip-Datei mit Excel-Seiten auf Servlet-Seite
Ansatz 1: Mein Servlets Code
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(bos);
for(Map.Entry<String, List<Data>> entry : DatasMap.entrySet())
{
String fileName = entry.getKey();
List<Data> excelData = entry.getValue();
// The below code constructs the workbook and returns it
SXSSFWorkbook workBook = getWorkBook(fileName, excelData);
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
workBook.write(zos);
zos.closeEntry(); // getting error at this line
}
Fehler:
SEVERE: Servlet.service() for servlet [MyApp-server] in context with path [/myapp-server] threw exception
java.io.IOException: Stream closed
at java.util.zip.ZipOutputStream.ensureOpen(ZipOutputStream.java:82)
at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:231)
Ansatz 2:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(bos);
ServletOutputStream out = response.getOutputStream();
for(Map.Entry<String, List<Data>> entry : DatasMap.entrySet())
{
String fileName = entry.getKey();
List<Data> excelData = entry.getValue();
// The below code constructs the workbook and returns it
SXSSFWorkbook workBook = getWorkBook(fileName, excelData);
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
workBook.write(bos);
bos.writeTo(zos)
zos.closeEntry(); // this line works perfectly in this case
}
zos.close();
byte[] bytes = bos.toByteArray();
//setting content-type and zip file name
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment; filename=Templates.zip");
out.write(bytes);
out.flush();
Ansatz 2 funktioniert gut, aber wenn ich versuche zu Zip-Datei beim Client öffnen ide, bekomme ich Fehler sagen error extracting
Ich bin nicht sicher, ob excel sheet
beschädigt ist oder ein anderer Server Seitenstrom Problem. Wenn irgendein Körper einige hilfreiche Gedanken/Ideen hat, bitte teile mit mir.
Ihre Lösung Woks wie ein Zauber .. dank @wero. – Uppicharla