【问题标题】:How do you open a PDF in a new page in ASP.NET Core? (Google Chrome)如何在 ASP.NET Core 的新页面中打开 PDF? (谷歌浏览器)
【发布时间】:2021-06-02 08:19:30
【问题描述】:

谷歌浏览器有一个非常简洁的功能,如果下载时页面正确提供,它会在新选项卡中打开 .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'。 我在 google 和 StackOverflow 上进行了搜索,但没有找到任何适用于 ASP.NET Core 的更新。

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

【问题讨论】:

  • 如果删除 _target 属性会发生什么?这会像你想要的那样在当前选项卡中打开 PDF 吗?
  • 尝试使用 FileResult 而不是 IActionResult 作为返回类型
  • @mason 我之前没有 _target 属性,它只会像其他文件一样定期下载文件。
  • @beggarboy 我认为应该是 target="_blank" 而不是 _target="blank

标签: google-chrome asp.net-core


【解决方案1】:

你需要返回 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;

【讨论】:

    猜你喜欢
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2016-08-15
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多