MIME type(互联网媒体类型)

话题相关词汇:Internet media typeMIME 类型MIME typecontent type媒体类型内容类型互联网媒体类型
1 篇话题相关文章,更新时间:

互联网媒体类型(Internet media type,也称为MIME类型MIME type)或内容类型content type))是给互联网上传输的内容赋予的分类类型。一份内容的互联网媒体类型是由其文件格式与内容决定的。互联网媒体类型与文件拓展名相对应,因此计算机系统常常通过拓展名来确定一个文件的媒体类型并决定与其相关联的软件。互联网媒体类型的分类标准由互联网号码分配局(IANA)发布。1996年十一月,媒体类型在RFC 2045中被最初定义,当时仅被使用在SMTP协议的电子邮件中。现在其他的协议(比如HTTP或者SIP)也都常使用MIME类型。 一个MIME类型至少包括两个部分:一个类型(type)和一个子类型(subtype)。此外,它还可能包括一个或多个可选参数(optional parameter)。比如,HTML文件的互联网媒体类型可能是

text/html; charset = UTF-8

在这个例子中,文件类型为text,子类型为html,而charset是一个可选参数,其值为UTF-8

命名格式

一个MIME类型包括一个类型(type),一个子类型(subtype)。此外可以加上一个或多个可选参数(optional parameter)。其格式为

类型名 / 子类型名 [ ; 可选参数 ] 

目前已被注册的类型名有applicationaudioexampleimagemessagemodelmultiparttext,以及videochemical是一个非官方的常用类型名。此外,非标准的类型名一般会加上x-前缀,但这种做法已经过时。

子类型名通常是一个媒体形式被冠以的名称,不过子类型名中也会有其它信息,包括厂商信息、产品信息、分类信息(子类型会被归进一个树状的分类结构中)、后缀等等。树结构分类信息以被.相互连接的字符串表示。每一个由.分隔开的部分又可以加上与其以-相连接的附加信息。此外,子类型名中也会有放在最后,与前面的内容以+相连接的后缀。因此,一个媒体类型的格式可以被更加细地表示为:

类型名 / [ 树结构分类信息(中间可能有一个或多个“.”) ] 子类型名(中间可能有一个或多个“-”) [ + 后缀 ] [ ; 可选参数 ] 

这些信息遵循注册树(见下)的规定。

注册树(Registration Tree)

所有的媒体类型都是通过IANA的流程注册的。为了保证注册流程的灵活性与效率,子类型被归进了一个树结构的分类中。树结构信息被放在了子类型名的最前面,以.与其它部分分隔。现在,存在以下几种树:标准树(Standards Tree)、厂商树(Vendor Tree)、个人树(Personal or Vanity Tree)、以及非标准的x.为前缀的树。这些树最早于1996年十一月随着RFC 2048被定义出来。IETF标准行动(Standard Action)可能会创造新的注册树以满足著名的持续性组织(比如科学社区)的注册和管理需求。

标准树

标准树中的子类型名不需要树结构信息(也就是不需要带.的前缀)。

类型名 / 子类型名 [ + 后缀 ] [ ; 可选参数 ] 

要注册标准树中的子类型,其必须遵从IESG直接批准的IETF规范,或者被由IANA认证的标准相关组织注册。

厂商树

厂商树中包含与公开使用的产品相联系的媒体类型。其使用vnd.前缀。在前缀之后必须是著名厂商的名称或是IANA认证厂商的名称加上表示文件类型和/或内容的文字。

类型名 / vnd.子类型名 [ + 后缀 ] [ ; 可选参数 ] 

比如与Debian项目组织提供的dpkg相关联的.deb文件的MIME类型是:

application/vnd.debian.binary-package

其中,debian是厂商(生产方)名称,而binary-package是对文件类型和内容的描述。

“厂商”与“生产方”在这个语境下是相同的概念。工业财团和非盈利组织也可以注册厂商树中的媒体类型。任何想要传播与某种软件紧密联系的文件格式的人都可以注册厂商树中的子类型,但是这个子类型是属于该软件或是文件格式的生产方的。这种情况下,厂商可以选择在任何时间声明自己拥有第三方进行的注册的所有权。

个人树

个人树中包含试验性或者不会以商业形式公开的子类型。个人树中的子类型名的前缀是prs.

类型名 / prs.子类型名 [ + 后缀 ] [ ; 可选参数 ] 

个人树中的子类型属注册者所有,但也可以转让。

未注册的x.树

x.为第一前缀的子类型名仅能够在私人的、本地的环境中使用。此类型的子类型不能被注册。其只能在相互间同意的各方中传输使用。尽管有时未被注册的MIME类型必须被使用,这是不被推荐的。

类型名 / x.子类型名 [ + 后缀 ] [ ; 可选参数 ] 

带有x-的子类型名原先被归到这颗树中,但是这种做法已经不被采用。如果一个带有x-前缀的子类型名被广泛使用和接受,其可能最终会被注册并且归进其它树中,尽管x-本身已经过时。

媒体类型列表

IANA维护着一个媒体类型和字符编码的记录列表。他们的列表通过互联网向公众开放。

Type application

分别对于不同用途的文件:

  • application/atom+xml:Atom feeds
  • application/ecmascript:ECMAScript/JavaScript;(相当于application/javascript但是严格的处理规则)
  • application/EDI-X12:EDI ANSI ASC X12资料
  • application/EDIFACT:EDI EDIFACT资料
  • application/json:JSON(JavaScript Object Notation)
  • application/javascript:ECMAScript/JavaScript(相当于application/ecmascript但是宽松的处理规则)它不被IE 8或更早之前的版本所支持。虽然可以改用text/javascript,但它却被RFC 4329定义为过时。在HTML5之中,<script>标签的type的属性是可省略的,因为所有的浏览器即使在HTML5以前都一直默认使用JavaScript。
  • application/octet-stream:任意的二进制文件(通常做为通知浏览器下载文件)Generally speaking this type identifies files that are not associated with a specific application. Contrary to past assumptions by software packages such as Apache this is not a type that should be applied to unknown files. In such a case, a server or application should not indicate a content type, as it may be incorrect, but rather, should omit the type in order to allow the recipient to guess the type.
  • application/ogg:Ogg, 视频文件格式
  • application/pdf:PDF(Portable Document Format)
  • application/postscript:PostScript
  • application/rdf+xml:Resource Description Framework
  • application/rss+xml:RSS feeds
  • application/soap+xml:SOAP
  • application/font-woff:Web Open Font Format;(推荐使用;使用application/x-font-woff直到它变为官方标准)
  • application/xhtml+xml:XHTML
  • application/xml:XML文件
  • application/xml-dtd:DTD文件
  • application/xop+xml:XML-binary Optimized Packaging
  • application/zip:ZIP压缩包
  • application/gzip:Gzip

Type audio

数字音频文件:

  • audio/mp4:MP4音频档案
  • audio/mpeg:MP3或其他MPEG音频档案
  • audio/ogg:Ogg音频档案
  • audio/vorbis:Vorbis音频档案
  • audio/vnd.rn-realaudio:RealAudio音频档案
  • audio/vnd.wave:WAV音频档案
  • audio/webm:WebM音频档案
  • audio/flac:FLAC音频档案

Type image

图像文件:

  • image/gif:GIF图像文件
  • image/jpeg:JPEG图像文件
  • image/png: PNG图像文件
  • image/webp: WebP图像文件
  • image/svg+xml:SVG向量图像文件
  • image/tiff:TIFF图像文件
  • image/icon:ICO图片文件。

Type message

Type model

三维计算机图形文件:

  • model/example
  • model/iges:IGS files, IGES files
  • model/mesh:MSH files, MESH files
  • model/vrml:WRL files, VRML files
  • model/x3d+binary:X3D ISO standard for representing 3D computer graphics, X3DB binary files
  • model/x3d+vrml:X3D ISO standard for representing 3D computer graphics, X3DV VRML files
  • model/x3d+xml:X3D ISO standard for representing 3D computer graphics, X3D XML files

Type multipart

Type text

  • text/css:CSS文件
  • text/csv:CSV文件
  • text/html:HTML文件
  • text/javascript (过时): JavaScript; 在 RFC 4329 中定义并舍弃,以减少使用,推荐使用 application/javascript。然而,相比于 application/javascript ,在 HTML 4 和 5 中,可以使用text/javascript ,且有跨浏览器的支持。因为在使用 <script> 时,对于其 "type" 属性 ,所有浏览器都会使用正确的默认值(尽管 HTML 4 的规格中明确要求),所以 HTML 5 中定义为选择性的,且没必要。
  • text/plain:纯文字内容
  • text/vcard:vCard(电子名片)
  • text/xml:XML

Type video

视频文件格式文件(可能包含数字视频与数字音频):

  • video/mpeg:MPEG-1视频文件
  • video/mp4:MP4视频文件
  • video/ogg:Ogg视频文件
  • video/quicktime:QuickTime视频文件
  • video/webm:WebM视频文件(基于Matroska基础)
  • video/x-matroska:Matroska(多媒体封装格式)
  • video/x-ms-wmv:Windows Media Video视频文件
  • video/x-flv:Flash Video(FLV档)