我们正在为我们的客户生成 PDF 文档并使用 Servlet 为他们提供服务。以下代码适用于 Firefox、Chrome 和 Opera,但不适用于任何版本的 IE。弹出窗口只闪烁 IE 但没有任何反应。但是,我们可以通过从 IE 的地址栏直接请求 servlet 来显示文件下载对话框。我们尝试了几种 ContentType(应用程序/下载、应用程序/x-download 等)
客户端代码:
String URL = "/files/pdf?pdfId=" + getPdfId();
Window.open(URL, "_blank", "");
Servlet 将 pdf 作为字节 [] 提供服务:
byte[] bytes = getFileAsByteArray();
BufferedInputStream in = new BufferedInputStream(new ByteArrayInputStream(bytes));
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
response.setHeader("Content-Disposition", "attachment; filename=document.pdf");
response.setContentType("application/octet-stream");
response.setContentLength(bytes.length);
byte[] buffer = new byte[8192];
for (int length = 0; (length = in.read(buffer)) > 0;) {
out.write(buffer, 0, length);
}
out.flush();
out.close();
对此有什么想法吗?