我不想下载BufferedOutputStream
when return java方法。
我的代码:
FacesContext ctx = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse();
response.setHeader("Content-Disposition", "attachment; filename=\"" + "Invoice.zip\";");
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
ZipOutputStream zos = new ZipOutputStream(bos);
for(SalesEInvObject InvoiceObj : this.InvoiceTable){ // MAIN FOR-LOOP STARTS
if (InvoiceObj.getInvoiceNo() != null) {
javax.servlet.http.HttpSession httpSession =(javax.servlet.http.HttpSession) ctx.getExternalContext().getSession(false);
httpSession.setAttribute(BaseHttpServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
reportOutput.getInternalReportObject());
byte[] bytes = reportOutput.getReportOutputBytes();
int length = ((bytes == null) ? 0 : bytes.length);
response.setContentLength(length*tableSize);
final ZipEntry ze = new ZipEntry(reportOutputFileName+".pdf");
zos.putNextEntry(ze);
zos.write(bytes, 0, bytes.length);
zos.closeEntry();
}else {
return null;
}
}//LOOP ENDS
zos.close();
ctx.responseComplete();
我的问题是当发票有编号时,它会生成发票并以压缩的 zip 文件下载。但是当它没有号码时,我不想下载 zip。但仍然是 zip 文件下载,但其中没有空文件。
如果没有生成 pdf,我不想下载 zip 文件。
任何帮助...