Internet explorer Internet Explorer 9不对内联附件使用文件名
我在Servlet中使用此代码,该Servlet设置内联PDF文档的文件名: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
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