asp.net-mvc-3 - 使用 MVC 3 在浏览器选项卡中打开 PDF 结果

标签 asp.net-mvc-3 pdf

我正在使用 ASP.NET MVC 3。我有一个 Controller 操作,它返回一个 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,因为我可以用谷歌搜索一些 PDF,单击链接,然后 PDF 将在选项卡中打开。

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

最佳答案

我从 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"到响应 header ,即使响应 header 中已经存在 Content-Disposition。

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

所以现在最好的方法是为“内联”手动添加 Content-Disposition,然后使用带有 2 个参数的 File:
Response.AppendHeader("Content-Disposition", "inline; filename=something.pdf")
Return File(output, "application/pdf")

关于asp.net-mvc-3 - 使用 MVC 3 在浏览器选项卡中打开 PDF 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168846/

相关文章:

css - MVCMailer + Razor + CSS 问题

c# - 使用 Razor 为类定义别名

pdf - 如何让 pdf 在完全下载之前显示在网络浏览器中

java - 如何避免添加 pdf 上传到 DAM 的演绎版?

java - 如何使用java将多个多页tiff文件合并为单个pdf?

java - 检索 pdf 中图像的页码 - IText

asp.net-mvc-3 - ViewBag.Title 错误

c# - 如何为 MYSQL 存储过程设置日志记录

asp.net-mvc-3 - ASP.NET MVC 不会将 aspx 页面中的模型对象转换为适当的已将模型发送到此页面的方法

php - 从 PHP Web 应用程序打印客户端报告