[英]How to open PDF file in a new tab or window instead of downloading it using C# and ASP.NET MVC?
[英]How to open a pdf file using the controller? Asp.net MVC
我正在嘗試使用控制器在我的應用程序中打開位於文件夾(Content/extras)內的 PDF 文件,但對我不起作用。 我收到的錯誤是
“找不到文件'C:/..../Content/extras/PDFName'”異常詳細信息:System.IO.FileNotFoundException:找不到文件'C:/..../Content/extras/PDFName'”
所以基本上它說它找不到該文件,但該文件在該位置是 100% 並且名稱是正確的。 雖然我確實注意到這是試圖找到“PDFName”而不是“PDFName.pdf”,所以也許這就是錯誤所在,並且控制器中的“MimeMapping”沒有正確編碼。
這是我的代碼:
控制器
public FileResult PDFFlyer()
{
string path = Server.MapPath(String.Format("~/Content/extras/PDFName"));
string mime = MimeMapping.GetMimeMapping(path);
return File(path, mime);
}
路由配置
routes.MapRoute(
name: "PDFFlyer",
url: "{filename}",
defaults: new { controller = "PDF", action = "PDFFlyer", filename =
UrlParameter.Optional }
);
cshtml 文件
<a class="dropdown-item" href="@Url.Action("PDFFlyer", "PDF")" target="_blank">PDF Flyer</a>
我究竟做錯了什么? 我再次猜測是“MimeMapping”控制器代碼不正確,因為它似乎沒有在尋找“.pdf”。 並且只是在尋找 PDFName,但不確定出了什么問題。 有什么建議? 謝謝。
我終於弄明白了。 我只需要將 .pdf 擴展名添加到“路徑”變量上的 PDFName 中。 混亂是因為我認為“路徑”只是只有 PDFName 而不是 .pdf 擴展名的路徑,然后“mime”會有“.pdf”擴展名。 但是,不,“路徑”應該包含文件包含 .pdf 擴展名的整個路徑,然后“mime”變量只是根據我的理解,只是為了識別文件的類型。
所以,控制器,這是我為它工作而改變的唯一東西,看起來像這樣:
public FileResult PDFFlyer()
{
//include the .pdf extention at the end
string path = Server.MapPath(String.Format("~/Content/extras/PDFName.pdf"));
string mime = MimeMapping.GetMimeMapping(path);
return File(path, mime);
}
唯一不能正常工作的是路由 URL,但這是另一個線程中的另一個問題。 但至少 pdf 文件顯示正確,這是這個問題的目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.