簡體   English   中英

如何使用控制器打開pdf文件? 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM