【问题标题】:Displaying file inline throws 'Could not find a part of the path'显示文件内联抛出“找不到路径的一部分”
【发布时间】:2017-12-19 20:00:37
【问题描述】:

我正在构建一个 ASP.NET MVC 4 应用程序,该应用程序需要允许用户在 Chrome 中的浏览器中显示 PDF 内联(不提供下载)。到目前为止,我已经使用以下答案来帮助我构建它:

这是我的控制器中的操作:

public ActionResult DownloadPdf()
{
    var mimeType = "application/pdf";
    var filepath = Server.MapPath(Url.Content("~/downloads/"));
    var filename = "Sample.pdf";
    Response.Headers.Remove("Content-Disposition");
    Response.AppendHeader("Content-Disposition", "inline; filename=" + filename);
    return File(filepath, mimeType);
}

下面是调用的 JavaScript 来打开一个包含内联文件的新窗口:

function downloadPdf() {
    var path = '@Url.Action("DownloadPdf")';
    window.open(path, '_blank');
}

使用上面的代码,在 Chrome 中打开一个新窗口(选项卡),但以下情况除外:

找不到路径“C:\_Projects\myapp\PDFHandler\downloads\”的一部分。

但文件 Sample.pdf 位于该文件夹中。我读到要打开内联文件,我们不需要向File() 方法提供文件名。如果我将上述内容更改为文件路径和名称,错误就会消失,但它会在 Chrome 中再次为我提供“保存”对话框。

【问题讨论】:

  • 但是文件路径应该包含文件名,不是吗?
  • 您可以尝试将标头内容类型强制为“application/pdf”吗,我知道 File 类应该这样做,就像测试一样。
  • 我在本地测试了您的代码,它按预期工作:/
  • test.pdf 文件可以分享吗?
  • Dropbox 或类似的东西

标签: c# asp.net-mvc google-chrome


【解决方案1】:

我在本地测试了您的代码,它按预期工作,您的 PDF 文件也是正确的。

但最终决定权的是浏览器。这些是在 chrome 中设置 PDF 预览的步骤:

  1. 在您的计算机上,打开 Chrome。
  2. 点击右上角的更多,然后点击设置。
  3. 点击底部的高级。
  4. 在“隐私和安全”下,点击内容设置。
  5. 在底部附近,单击 PDF 文档。
  6. 关闭使用其他应用程序打开的 PDF。

来源:https://support.google.com/chrome/answer/6213030?hl=en

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2018-07-03
    • 2013-01-13
    • 2017-09-10
    相关资源
    最近更新 更多