【问题标题】:How to show a pdf file in the browser tab from an action method如何通过操作方法在浏览器选项卡中显示 pdf 文件
【发布时间】:2016-02-07 01:25:17
【问题描述】:

我正在尝试在 mvc 应用程序中执行 pdf 查看器功能。当用户单击“阅读 pdf”链接时,它应该打开一个新选项卡/窗口,并且用户应该能够查看 pdf 文件。因此,我检查了示例,但找不到。你能给我推荐任何文章或例子吗?

【问题讨论】:

标签: asp.net-mvc


【解决方案1】:

在您的第一个视图中显示一个锚标记并传递一个 id(以识别要显示的 PDF)

@Html.ActionLink("read the pdf","view","doc",new { @id=123},null)

现在在 doc 控制器中,有一个 action 方法,它有一个名为 id 的参数,并使用 File 方法返回 pdf。

public ActionResult View(int id)
{
  byte[] byteArrayOfFile=GetFieInByteArrayFormatFromId(id);
  return File(byteArrayOfFile,"application/pdf");
}

假设GetFileInByteArrayFormatFromId是返回PDF文件字节数组格式的方法。

如果您知道物理存储的 PDF 文件的完整路径,也可以返回 PDF,使用此overload

public ActionResult Show()
{
  string path="FullPAthTosomePDFfile.pdf";
  return File(path, "application/pdf","someFriendlyName.pdf");
}

在浏览器中显示 PDF 而不下载它

根据最终用户的浏览器设置,上述解决方案将询问用户他/她是否希望下载或打开文件,或者只是下载/打开文件。如果您希望直接在浏览器中显示文件内容而不将其下载到用户的计算机,您可以向浏览器发送文件流。

public ActionResult Show(int id)
{
    // to do : Using the id passed in,build the path to your pdf file

    var pathToTheFile=Server.MapPath("~/Content/Downloads/sampleFile.pdf");
    var fileStream = new FileStream(pathToTheFile,
                                        FileMode.Open,
                                        FileAccess.Read
                                    );
    return  new FileStreamResult(fileStream, "application/pdf");           
}

以上代码希望您在~/Content/Downloads/ 位置有一个名为sampleFile.pdf 的pdf 文件。如果您使用不同的名称/命名约定存储文件,您可以更新代码以根据传入的 Id 构建唯一的文件名/路径。

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      • 2012-02-10
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 2021-03-25
      相关资源
      最近更新 更多