我的MVC-3应用程序具有文件上传功能。文件内容和内容类型保存在数据库中,以便在尝试下载时,可以重新加密正确的文件。
一切正常,但如果浏览器是Firefox 13(我有13.0.1),则docx
文件的内容类型被检测为text/plain
而不是application/vnd.openxmlformats-officedocument.wordprocessingml.document
。< / p>
我已经检查过它在IE中工作正常。现在我升级到Firefox 14.0.1。它的工作也很好。
现在的问题是,如何确定独立于浏览器的HttpPostedFileBase
的内容类型?
答案 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响应头。