(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
中包含扩展名。
我有以下代码在浏览器中为用户提供文件。服务的文件没有扩展名,用户必须手动添加扩展名才能打开它。
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
中包含扩展名。