【发布时间】:2017-12-19 20:00:37
【问题描述】:
我正在构建一个 ASP.NET MVC 4 应用程序,该应用程序需要允许用户在 Chrome 中的浏览器中显示 PDF 内联(不提供下载)。到目前为止,我已经使用以下答案来帮助我构建它:
- https://stackoverflow.com/a/30893427/177416 -- 弹出保存对话框
- https://stackoverflow.com/a/3605510/177416 -- 同上
这是我的控制器中的操作:
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