如何在 ASP.NET Core 的新页面中打开 PDF? (谷歌浏览器)

时间:2021-03-03 17:47:47

标签: google-chrome asp.net-core

谷歌浏览器有一个非常巧妙的功能,如果页面在下载时正确提供,它会在新标签中打开 .pdf 文件。

我想知道如何在 .NET Core 的最新版本中实现这一点?

我当前的配置如下:

后端:

[HttpGet("download")]
public IActionResult DownloadHelpFile()
{
      string path = Path.Combine(_environment.WebRootPath, "files/dummy.pdf");
      var net = new System.Net.WebClient();
      var data = net.DownloadData(path);
      var content = new MemoryStream(data);
      var contentType = "application/pdf";
      var fileName = "dummy.pdf";
      return File(content, contentType, fileName);
}

前端:

<a asp-action="DownloadHelpFile" _target="blank">@CasesLocalizer["NeedHelpDownloadOurGuide"]</a> &nbsp;&nbsp;

我还把 _target='blank' 换成了 'new'。 我在谷歌和 StackOverflow 上搜索过,但没有找到任何适用于 ASP.NET Core 的更新。

它仍然只是定期下载文件,但不会在新选项卡中显示 PDF。 我的代码缺少什么?

1 个答案:

答案 0 :(得分:2)

您需要返回 FileStreamResult

[HttpGet("download")]
public IActionResult DownloadHelpFile()
{
      string path = Path.Combine(_environment.WebRootPath, "files/dummy.pdf");
      var net = new System.Net.WebClient();
      var data = net.DownloadData(path);
      var content = new MemoryStream(data);
      var contentType = "application/pdf";
      var fileName = "dummy.pdf";
      return FileStreamResult (content, contentType, fileName);
}

并使用 target="_blank" 而不是 _target="blank

<a asp-action="DownloadHelpFile" target="_blank">@CasesLocalizer["NeedHelpDownloadOurGuide"]</a> &nbsp;&nbsp;