为什么IE不显示带有GWT Window.open()的PDF文件下载对话框?

时间:2011-07-13 06:37:32

标签: java javascript gwt smartgwt window.open

我们正在为客户生成PDF文档并使用Servlet为其提供服务。 以下代码适用于Firefox,Chrome和Opera,但不适用于任何版本的IE。弹出窗口只闪烁IE但没有任何反应。但是,我们可以通过从IE中的地址栏直接请求servlet来显示文件下载对话框。 我们尝试了几种ContentTypes(应用程序/下载,应用程序/ x下载等)

客户端代码:

String URL = "/files/pdf?pdfId=" + getPdfId();
Window.open(URL, "_blank", "");

将pdf作为byte []:

提供服务的Servlet
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();

对此有何想法?

4 个答案:

答案 0 :(得分:2)

试试这个:

Content-Disposition: inline

而不是:

Content-Disposition: attachment;filename=document.pdf

试试这个,然后告诉一些事情 发现如果我使用内联,那么我不应该使用 filename = document.pdf,这在IE中不起作用。 (其他浏览器忽略它)

您可以在此处阅读:http://indiwiz.com/2009/03/11/forcing-http-download/

答案 1 :(得分:0)

可能是因为pdf插件问题。 Link to adobe site for more details

答案 2 :(得分:0)

如果你无法解决问题 - 尝试改变问题中的内容!尝试发送ziped pdf文件或其他内容。它应该可以帮助你找到麻烦的根源。如果一切都适用于zip文件,则无需发送pdf文件

答案 3 :(得分:0)

尝试:

Window.open(GWT.getHostPageBaseURL()+URL,"","");

这可能有效! 我正在使用:

com.google.gwt.user.client.Window.open(GWT.getHostPageBaseURL()+URL, "", "");   

它工作得很好