繁体   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