我有一个 servlet,它根据请求中的某些参数动态生成 PDF 以响应。当我尝试在 IE 中打开/下载此文件时,我收到以下消息:
“无法从 [站点] 下载 [文件名]。 无法打开此 Internet 站点。请求的站点不可用或找不到。请稍后再试。”
这是我设置的响应:
response.setHeader("Content-Disposition", "attachment;filename=" + title + ".pdf");
response.setContentType("application/pdf");
在其他浏览器上一切正常。
更新:
我试过内联而不是附件。这将打开一个新窗口而不是打开/保存对话框(我更愿意有对话框),错误消息消失了,但新窗口在 IE 中只是空的。仍在使用其他浏览器。
我试过简单的、双引号的和没有引号的文件名,它不包含任何未转义的字符。双引号和无引号都没有区别,但单引号附加到文件名,我当然不希望这样。
文件名不包含未转义的字符。
我已经检查了 this 上的测试页面,上面写着 attachement, with filename, no quotes , 为所有浏览器传递。这是从一开始就使用的。
添加 Content-Lenght header 没有任何区别。
顺便说一句,Flying Saucer 用于制作 PDF。
最佳答案
我建议看看 http://greenbytes.de/tech/tc2231/其中列出了一大堆测试用例,用于说明不同浏览器如何使用不同的 Content-Disposition
header 值。我的猜测是 title
包含空格或其他一些需要转义的特殊字符,而 IE 目前正在拒绝非转义值。
关于java - 根据 HTTP 请求创建的 PDF 无法在 Internet Explorer 中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625108/