Firefox 13.0.1无法正确确定docx文件的内容类型

时间:2012-08-01 03:53:07

标签: .net file-upload cross-browser mime-types

我的MVC-3应用程序具有文件上传功能。文件内容和内容类型保存在数据库中,以便在尝试下载时,可以重新加密正确的文件。

一切正常,但如果浏览器是Firefox 13(我有13.0.1),则docx文件的内容类型被检测为text/plain而不是application/vnd.openxmlformats-officedocument.wordprocessingml.document。< / p>

我已经检查过它在IE中工作正常。现在我升级到Firefox 14.0.1。它的工作也很好。

现在的问题是,如何确定独立于浏览器的HttpPostedFileBase的内容类型?

2 个答案:

答案 0 :(得分:1)

原始答案

据我了解,MIME类型不是最可靠的东西。

就个人而言,我会完全忽略浏览器提供的内容类型,并使用基于FileName扩展名的服务器地图(不是很精确,但至少类似于操作系统本身的经验)。

毕竟,客户端几乎可以向您发送任何内容类型(取决于浏览器,可能还有系统)。

将扩展名映射到内容类型

一个选项(问题作者使用)是使用HKEY_CLASSES_ROOT中的条目:

var key = Registry.ClassesRoot.OpenSubKey(extension, false);
var value = key != null ? key.GetValue("Content Type", null) : null;
var mime = value != null ? value.ToString() : string.Empty;

答案 1 :(得分:0)

Web开发服务器可能是您的问题。您可能需要考虑在IIS上测试解决方案并将mime类型添加到配置中。另一种方法是根据文件扩展名覆盖MVC应用程序中的HTTP响应头。​​