Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer Internet Explorer 9不对内联附件使用文件名_Internet Explorer_Servlets_Http Headers - Fatal编程技术网

Internet explorer Internet Explorer 9不对内联附件使用文件名

Internet explorer Internet Explorer 9不对内联附件使用文件名,internet-explorer,servlets,http-headers,Internet Explorer,Servlets,Http Headers,我在Servlet中使用此代码,该Servlet设置内联PDF文档的文件名: response.setContentType("application/pdf"); response.setContentLength((int) file.length()); response.setHeader("Content-disposition", "inline; filename=\"" + file.getName() + "\""); 但是,这在IE 9中不起作用:“另存为…”对话框仅显示U

我在Servlet中使用此代码,该Servlet设置内联PDF文档的文件名:

response.setContentType("application/pdf");
response.setContentLength((int) file.length());
response.setHeader("Content-disposition", "inline; filename=\"" + file.getName() + "\"");
但是,这在IE 9中不起作用:“另存为…”对话框仅显示URL的最后一个路径部分,后跟“.pdf”(对于“/some/URL/invoice”,它是“invoice.pdf”)


这是已知的bug吗?是否有解决方法?

这确实是IE的默认行为。它不会以任何方式使用
内容处置
标题的
文件名
属性为另存为准备默认文件名。相反,它使用请求URL路径信息的最后一部分

我建议重写Servlet和/或链接,使所需的文件名作为请求路径信息的一部分提供,而不是作为请求参数提供

因此,与其

<a href="/pdfservlet">View PDF</a>

顺便说一句,这与它是内联服务还是作为附件服务无关。

在本文中,“这不起作用”的确切含义是什么?您得到的是什么名称?您尝试设置什么样的名称,您能举个例子吗?尝试不在文件名周围加引号或使用单引号可能重复IE10+?IE11也是如此。到目前为止,有没有任何解决方法不会改变URL?当使用“附件”作为下载类型时,它工作正常。表格@还表示IE的内联功能已被破坏。有人拥有包含IE 10/11的表格吗?@rominator007:请参阅第一段,为什么不可能进行这种变通。@BalusC是的。我读过。非常感谢。我只是想知道一个人是否可以将IE 10+引入另一种行为,因为这个问题已经过时了。不幸的是,情况似乎并非如此:-(对于所有在C#/Asp.net中有问题的url中的点,请检查此链接:
<a href="/pdfservlet?file=foo.pdf">View PDF</a>
<a href="/pdfservlet/foo.pdf">View PDF</a>
String filename = request.getPathInfo().substring(1); // foo.pdf