3
我正在構建一個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:\ _項目\ MYAPP \ PDFHandler \下載\' 。
但是Sample.pdf文件在該文件夾中。我讀過這個文件以內聯方式打開,我們不需要提供文件名到File()
方法。如果我將上述內容更改爲文件路徑和名稱,則錯誤消失,但它會在Chrome中再次提供Save對話框。
但文件路徑應包含文件名,不應該嗎? – hardkoded
@kblok,將其修改爲包含文件名,並且它還提供不是內聯下載的文件。 – Alex
你可以嘗試強制頭文件的內容類型爲「application/pdf」,我知道File類應該這樣做,就像測試一樣。 – hardkoded