(ASP.NET MVC) 浏览器中提供的文件没有扩展名

(ASP.NET MVC) Files Served in the Browser Have No Extension

我有以下代码在浏览器中为用户提供文件。服务的文件没有扩展名,用户必须手动添加扩展名才能打开它。

public ActionResult OpenDoc(int id = 0)
{
    Document doc = dbContext.Documents.Single(d => d.DocID == id);

    byte[] data = (byte[])doc.Data;
    string mimeType = doc.MimeType;
    return File(data, mimeType, doc.DocName);
}

当我调试时,我看到 mimeType 是 "application/pdf",这是正确的。但是,提供的文件没有 pdf 扩展名。为什么会这样,我该如何纠正?提前致谢...

或者:

return File(data, mimeType);

这不会为保存的文件建议文件名,浏览器会根据 URI 以及 application/pdf.pdf 的映射建议一个。

或:

return File(data, mimeType, doc.DocName + ".pdf");

这会将 ".pdf" 添加到建议的文件名中。

当然,如果 dbContext.Documents 中有多个 MIME 类型,那么您需要通过某种方式了解在给定情况下使用的扩展名。最简单的方法可能是在最初添加文件时保存扩展名:

return File(data, mimeType, doc.DocName + "." + doc.Extension);

或者,您可以查找支持的文件类型,或者只在 DocName 中包含扩展名。