0

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

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

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

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

4

2 回答 2

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;
于 2012-08-01T04:11:50.847 回答
0

The web development server may be your issue. You might want to consider testing the solution on IIS and add the mime type to the configuration. The alternative is to override the HTTP response header in the MVC application based off the file extension.

于 2012-08-01T04:16:00.933 回答