我使用 aspx 页面在浏览器中显示带有内联 API 的 pdf。
使用 Chrome/Firefox 保存 pdf 时,从 header("Content-Disposition", "inline;filename=xyz.pdf")
获取文件名
但是在使用 IE 保存 pdf 时,它不会从 header("Content-Disposition", "inline;filename=xyz.pdf")
读取文件名。 .相反,它采用 aspx 名称。
技术细节
我有一个 xyz.aspx 页面。
xyz.aspx 页面将调用文档的 API。
然后从 API 下载的文档将通过内联传输到浏览器以显示 pdf 文档。
我将响应头设置如下并写入文件字节。
HttpContext.Current.Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "inline;filename=\"" + Name + "\"");
HttpContext.Current.Response.ContentType = "application/pdf";
在 IE 中保存打开的 pdf 时,它需要 xyz.aspx 而不是标题中的名称。
使用IE保存pdf时,需要以pdf文件名保存。
我用谷歌搜索了很多,因为每个人都告诉了它的 IE 行为。我希望有人知道解决方案。
注:我必须在浏览器中显示pdf然后保存。不要使用“附件”下载
最佳答案
确实有些版本的 IE 无法处理 ("Content-Disposition", "inline;filename=...")
这是因为 filename=...
最初用于附件处置。并非所有基于浏览器的 PDF 查看器都可以处理它。
我看到的唯一解决方案是允许通过不同的 url 进行访问。
假设您有一条通往 pdf 的路线,例如:/pdf/view
.如果你把它改成 /pdf/view/filename
并且您将应用程序配置为以与 /pdf/view
相同的方式处理此路由你的问题解决了。
您也可以在网络服务器上重写下载 url。
根据您的网络服务器,您有多种方法可以做到这一点。
关于response-headers - IE 的内容处置内联文件名问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177894/