哑剧类型胡言乱语

Posted

技术标签:

【中文标题】哑剧类型胡言乱语【英文标题】:Mime Type Gibberish 【发布时间】:2012-09-11 01:36:52 【问题描述】:

为什么同一个文件扩展名有这么多 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 类型。

【问题讨论】:

MPEG3 可以是纯音频或视频(可能是视频或音频+视频)。 “x-”前缀通常表示 MIME 类型的未批准(由标准委员会)值。实验性的,当标头以 X- 为前缀表示非规范时,可能具有 RFC850 的传统。 延伸阅读iana.org/assignments/media-types/index.html 帮助阅读理解;官方 IANA 文档不包括官方 MIME 类型中的 audio/mpeg3audio/mpeg 在 RFC 3003 中被列为适用于 .mp3(以及 .mp1.mp2)文件扩展名。rfc-editor.org/rfc/rfc3003.txt 对于 MP3 视频,video/mpeg 似乎合适;它一直追溯到 RFC 2046。rfc-editor.org/rfc/rfc2046.txt 不,不应该仅根据扩展名来确定文件类型。各种多媒体容器格式,例如.mp3 可以容纳各种类型的流,您必须检查文件以找出它们是什么类型的流。如果您的 Web 服务器无法执行此操作,或者您不想这样做,则必须对文件进行预处理并明确地重命名它们,以便 Web 服务器可以从文件扩展名映射到正确的 MIME 类型,但是当然,这有一些不良后果。 【参考方案1】:

如果您使用的是 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 );

【讨论】:

以上是关于哑剧类型胡言乱语的主要内容,如果未能解决你的问题,请参考以下文章

关于小程序胡言乱语

胡言乱语

胡言乱语

纯文本不会显示在 IE 中 - 而是奇怪的胡言乱语

New Bing怼人说谎PUA,ChatGPT已经开始胡言乱语了

2019最后一天的胡言乱语