【问题标题】:How to open a pdf file using the controller? Asp.net MVC如何使用控制器打开 pdf 文件? ASP.NET MVC
【发布时间】:2020-03-15 18:17:09
【问题描述】:

我正在尝试使用控制器在我的应用程序中打开位于文件夹 (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,但不确定出了什么问题。有什么建议么?谢谢。

【问题讨论】:

  • PDFName 只是一个模拟文件名还是没有 .pdf 扩展名的实际文件名?
  • 是一个mock,是为了反映pdf文件的文件名。
  • 在您的问题文本中,您确实提到缺少扩展名,这就是我要问的原因 - 那么现在是真的吗?
  • 我不明白你的问题
  • 我问过您“PDFName”是否只是一个模拟,您回答“是”,但在您的问题中,您想知道为什么缺少“PDFName”的扩展名。如果这只是对您的问题的模拟-一切都很好。如果没有,那么为什么它的文件名中没有像您在问题中所说的那样具有 pdf 扩展名?

标签: c# asp.net asp.net-mvc pdf model-view-controller


【解决方案1】:

我终于明白了。我只需要将 .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 文件正确显示了这个问题的目的。

【讨论】:

    猜你喜欢
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多