1

为什么同一个文件扩展名有这么多 mime 类型?一个人应该如何仅根据扩展名来确定文件的 mime 类型,例如,如果有多种 mime 类型与此扩展名相关联?

Example:
.mp3    audio/mpeg3
.mp3    audio/x-mpeg-3
.mp3    video/mpeg
.mp3    video/x-mpeg

一个人应该如何知道默认的 mime 类型?表示什么x-?这是 mime 类型的 linux/unix 风格吗?为什么这些都没有标准化(还)?

来源取自:Sitepoint然而,还有多个其他列表也产生类似的意大利面。

编辑:

我要求 ASP.NET 页面应提供指向 IIS 外部源目录中的一些文件的链接。在 Windows 服务器中。我不知道这些文件是什么,但我知道我无法提供文件的完整路径,因为这可能是一个安全问题。

我正在使用与此类似的代码:

Response.ContentType = "image/jpeg";
Response.AppendHeader("Content-Disposition","attachment; filename=SailBig.jpg");
Response.TransmitFile( '[path to file]' );
Response.End();

我将 ContentType 属性替换为实际文件的 mime 类型。

4

1 回答 1

0

如果您使用的是 Framework 4.5,您可以使用以下方法获取 mimemapping:

var mapping = System.Web.MimeMapping.GetMimeMapping("something.jpg");

如果您使用的是 Framework 4,您可以访问非公共方法来执行相同的操作,如下所示:

var assembly = Assembly.Load("System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
var assemblyType = assembly.GetType("System.Web.MimeMapping");

var getMimeMappingMethod = assemblyType.GetMethod("GetMimeMapping", BindingFlags.Static | BindingFlags.NonPublic) ??
                           assemblyType.GetMethod("GetMimeMapping", BindingFlags.Static | BindingFlags.Public);

var mapping = (string)getMimeMappingMethod.Invoke(null, new object[] { fileName });
于 2014-09-10T10:42:40.383 回答