【问题标题】:Open PDF result in browser tab with MVC 3使用 MVC 3 在浏览器选项卡中打开 PDF 结果
【发布时间】:2011-09-04 08:38:42
【问题描述】:

我正在使用 ASP.NET MVC 3。我有一个控制器操作,它返回如下 PDF 文件:

Public Class ReportController
    ...
    Function Generate(id As Integer) As ActionResult
        ...
        Return File(output, "application/pdf", "something.pdf")
        ' "output" is a memory stream
    End Function

代码有效,但 Firefox 不在选项卡中显示结果,结果是下载或使用 Adob​​e Reader 打开。

我知道 Firefox 可以在选项卡中显示 PDF,因为我可以在 Google 上搜索一些 PDF,单击链接,然后 PDF 将在选项卡中打开。

如何设置操作以在选项卡中打开 PDF?

【问题讨论】:

    标签: asp.net-mvc-3 pdf


    【解决方案1】:

    我从related links on the right得到了答案:

    Response.AppendHeader("Content-Disposition", "inline")
    Return File(output, "application/pdf")
    

    PDF 在选项卡中打开,但文件名提示丢失,即使我这样做:

    Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf")
    Return File(output, "application/pdf", "something.pdf")
    

    所以最后我根本没有费心给出文件名提示。

    编辑

    带有 3 个参数的 ASP.NET MVC 3 的文件:

    Return File(output, "application/pdf", "something.pdf")
    

    会将Content-Disposition: attachment; filename="something.pdf" 添加到响应头中,即使响应头中已经存在 Content-Disposition。

    因此,如果您手动将 Content-Disposition 添加到标头,然后使用带有 3 个参数的 File,您最终会得到 两个 Content-Disposition 标头。如果响应头是这样的,Firefox 8 会说响应已损坏。

    所以现在最好的方法是为“内联”手动添加 Content-Disposition,然后使用带有 2 个参数的 File:

    Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf")
    Return File(output, "application/pdf")
    

    【讨论】:

    • 一些快速测试表明 Firefox、IE6/IE7 和 Chrome 都使用该文件名。但是,IE8 没有。知道可能有用。
    • 要获取任何类型文件(不仅仅是 PDF)的内容类型,您可以在 System.Web 中调用 MimeMapping.GetMimeMapping(filename)。
    【解决方案2】:

    这可以在您的浏览器中进行配置。您可以更改设置以在浏览器中下载/打开或在所有文件类型的工具->选项->应用程序部分中的相关应用程序中打开。这与您的代码无关。

    【讨论】:

    • 但是我可以在网上找到一些PDF的链接,当我点击链接时PDF会在一个标签中打开,所以我认为我的浏览器设置不是问题。
    • 尝试使用 iframe 并将 source 作为 pdf 文件路径
    【解决方案3】:

    尝试直接链接到 PDF.... 如果它在选项卡中打开,然后尝试将您的路线更改为以 .pdf 结尾

    【讨论】:

      猜你喜欢
      • 2016-09-24
      • 2014-03-19
      • 2015-06-11
      • 2016-05-04
      • 1970-01-01
      • 2021-03-25
      • 2018-11-01
      • 2014-11-15
      相关资源
      最近更新 更多