什么是MIME类型?

353

我一直在研究如何构建插件,而其中一项经常被讨论的是“MIME类型”。我尝试了解并知道它是Multipurpose Internet Mail Extensions(多用途互联网邮件扩展),但没有合适的解释说明它与浏览器插件的关系,也就是说,为了构建插件,我需要知道什么。请用清晰简单的话解释一下:它是什么?为什么插件需要有MIME类型?

6个回答

858
MIME类型是用于标识数据类型的标签。它被用于让软件知道如何处理数据。在互联网上,它的作用类似于Microsoft Windows上的文件扩展名。
因此,如果服务器说“这是text/html”,客户端可以说:“啊,这是一个HTML文档,我可以内部渲染它”,而如果服务器说“这是application/pdf”,客户端可以说:“啊,我需要启动用户已安装并注册为application/pdf处理程序的FoxIt PDF Reader插件。”
你最常见地会在HTTP消息的头部(用于描述HTTP服务器响应的内容或请求中POST的数据的格式)和电子邮件头部(用于描述消息格式和附件)中找到它们。

这可以作为IP层端口的隐喻吗? - zyrup

88

MIME 代表“多用途互联网邮件扩展”。MIME类型是在互联网上对文件类型进行分类的一种标准方式。像Web服务器和浏览器这样的互联网程序都有MIME类型列表,以便它们可以无论在哪个操作系统中工作,都可以以相同的方式传输相同类型的文件。

MIME类型由两部分组成:一个类型和一个子类型,它们之间用斜杠(/)分隔。例如,Microsoft Word文件的MIME类型为application,子类型为msword。完整的MIME类型是application/msword。

虽然有一个完整的MIME类型列表,但它没有列出与文件相关联的扩展名,也没有描述文件类型。这意味着如果您想找到某种文件的MIME类型,可能会很困难。有时,您必须浏览列表并猜测您所关心的文件的MIME类型。


7
现在有一个包含MDN MIME类型和扩展名的列表。你也可以提交PR来对其进行改进。 - Darren Ng

45

MIME代表多用途互联网邮件扩展。它是根据文件的性质和格式来识别互联网上的文件的一种方式。

例如,使用HTTP响应中定义的Content-type头值,浏览器可以以正确的扩展名/插件打开该文件。

互联网媒体类型(也称为内容类型)与MIME类型相同。 MIME类型最初是为使用SMTP协议发送的电子邮件创建的。现在,这个标准在许多其他协议中使用,因此有了新的命名约定“互联网媒体类型”。

MIME类型是由两部分组成的字符串标识符:typesubtype

  • "type"指的是许多紧密相关的MIME类型的逻辑分组;它只是一个高级类别。
  • "subtypes"是"type"中一个文件类型的特定。

MIME子类型的x-前缀表示它是非标准的。
vnd前缀表示MIME值是供应商特定的。

来源


有趣的是,我在我的Linux脚本中看到了“application/x-shellscript”类型的文件,但我在互联网上找不到没有“x-”(“application/shellscript”)的同样MIME类型。 - Alex Martian

31

类比简单解释

场景1:

想象一下,有人给你发送了这封信:

ഹായ്, നിങ്ങൾക്ക് എങ്ങനെയുണ്ട്? ഏറ്റവും പുതിയ റിപ്പോർട്ട് എന്താണ്?

这是什么意思? ¯\(ツ)/¯ 考虑到涉及的步骤:

  1. 首先,识别语言(是泰米尔语吗?)。识别语言需要大量的计算能力:你要检查世界上所有的语言吗?
  2. 只有在识别语言之后才能解码。

场景2:

将文本从英语翻译成中文:

语言:马拉雅拉姆语 (查看翻译链接) 嗨,你好吗?最新的报告是什么?

现在,语言已经确定为马拉雅拉姆语,而不是泰米尔语,并写在信上。一半的工作已经完成,你可以继续解码。

将类比与HTML联系起来

因为存在不同的数据格式,提前指定它们可以让相应的客户端正确解释和“渲染”数据,而且计算量很小。记住,计算机使用的是1和0进行通信。当HTML被发送给您时,实际上就是这样发生的:
MIME类型:MP3 1001010101.... MIME类型:PDF 1001010101....
一旦您知道了MIME类型,您就可以轻松播放音频和查看PDF文件,几乎不需要任何努力。
这些类比并不完美,但希望您能看到它所要解决的问题以及解决方案。

4
支持泰米尔语,点赞! - vins
@vins 有关泰米尔语的问题?拜托,兄弟点赞是因为解释得好,而不仅仅是因为这是我最喜欢的语言之一!哈哈 - BenKoshy

14

我无法比维基百科在媒体类型中更好地解释:

除了电子邮件应用程序外,Web浏览器还支持各种MIME类型。这使得浏览器能够显示或输出不是HTML格式的文件。

换句话说,它帮助浏览器(或内容消费者,因为它可能不仅仅是浏览器)确定他们即将使用的内容;这意味着浏览器可以决定正确的插件来显示内容,或者媒体播放器可以加载正确的编解码器或插件。


0

在客户端-服务器模型的背景下考虑MIME是非常有用的。客户端和服务器通过HTTP协议进行通信。在HTTP请求或响应中,我们可以有一个主体。内容类型或MIME类型指定了主体的类型,例如text/javascript或其他类型的音频、视频等。

然而,MIME类型不仅限于HTTP。

顾名思义,MIME代表多用途互联网邮件扩展。最初,SMTP仅支持ASCII编码。然而,需要更多的支持。我们可以使用MIME给传输或接收的内容贴上标签。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接