IE中的Content-Disposition内联文件名问题

Rag*_*van 5 response-headers

我在浏览器中使用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";
Run Code Online (Sandbox Code Playgroud)
  • 问题:

    在IE中保存打开的pdf时,需要xyz.aspx而不是标题中的名称.

  • 需求:

    在使用IE保存pdf时,需要使用pdf名称进行保存.

我搜索了这么多,因为每个人都告诉它的IE行为.我希望有人知道解决方案.

注意:我必须在浏览器中显示pdf然后保存.不要使用"附件"下载

提前致谢.

Hik*_*iii 6

确实有些IE版本无法处理 ("Content-Disposition", "inline;filename=...")

这是因为filename=...最初是用于附件处置.并非所有基于浏览器的PDF查看器都可以处理它.

我看到的唯一解决方案是允许通过不同的URL访问.假设您有一个到pdf的路径,如:/pdf/view.如果将其更改为/pdf/view/filename,则将应用程序配置/pdf/view为以解决问题的相同方式处理此路由.

您还可以在Web服务器上重写下载URL.根据您的网络服务器,您可以通过各种方式执行此操作.