欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MIME类型

程序员文章站 2024-02-19 12:18:46
...

声明:【目前未整理完,待更新…】

以下为资料参考
《HTTP权威指南》
《HTTP RFC规范》


MIME 媒体类型(简称为 MIME 类型) 是描述报文实体主体内容的一些标准化名称
( 比如, text/html、 image/jpeg)。 本附录说明了 MIME 类型是怎样工作的、 如何注
册新的名字以及到哪里去查找更多的相关信息。
本附录还包含了 10 张便捷表格, 详细描述了从全球众多资源中搜集来的数百种
MIME 类型。 这可能是有史以来最详细的 MIME 类型列表。 希望这些表格会对你有所
帮助。
此附录的主要内容有:
• 在 D.1 节列出主要的参考资料;
• 在 D.2 节解释 MIME 类型的结构;
• 在 D.3 节说明了如何注册 MIME 类型;
• 附加的 10 张表格让你更便捷地查找 MIME 类型。
本附录包含了下列 MIME 类型表:
• application/*——表 D-3
• audio/*——表 D-4
• chemical/*——表 D-5
• image/*——表 D-6
• message/*——表 D-7
• model/*——表 D-8
• multipart/*——表 D-9
• text/*——表 D-10
• video/*——表 D-11
• 其他——表 D-12

一、 背景知识

MIME 类型最初是为多媒体电子邮件而开发的, 但目前在 HTTP 和其他几种需要描
述数据对象格式和用途的协议中也使用了 MIME 类型。
- RFC 2045, “MIME: Format of Internet Message Bodies”(“MIME: 因特网报文
主体的格式”)
描述了 MIME 报文结构的概况, 并介绍了 HTTP 借用的 Content-Type 首部。
【链接地址】: https://tools.ietf.org/html/rfc2405
- RFC 2046, “MIME: Media Types”(“MIME: 媒体类型”)
介绍了 MIME 类型及其结构。
【链接地址】: https://tools.ietf.org/html/rfc2406
- RFC 2047, “MIME: Message Header Extensions for Non-ASCII Text”(“MIME:
非 ASCII 文本的报文首部扩展”)
定义了一些在首部包含非 ASCII 字符的方式。
【链接地址】: https://tools.ietf.org/html/rfc2407
- RFC 2048, “MIME: Registration Procedures”(“MIME: 注册过程”)
定义了如何向因特网号码分配机构(“Internet Assigned Numbers Authority, IANA”) 注册 MIME 值。
【链接地址】: https://tools.ietf.org/html/rfc2408
- RFC 2049,“MIME: Conformance Criteria and Examples”(“MIME: 一致性标准及实例”)
详细介绍了一致性规则, 并提供了一些实例。
【链接地址】: https://tools.ietf.org/html/rfc2409

二、MIME类型结构

每种 MIME 媒体类型都包含类型、 子类型和可选参数的列表。 类型和子类型由一个
斜杠分隔, 如果有可选参数的话, 则以分号开始。 在 HTTP 中, MIME 媒体类型被
广泛用于 Content-Type 和 Accept 首部。 下面是几个例子:

Content-Type: video/quicktime
Content-Type: text/html; charset="iso-8859-6"
Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08j34c0p
Accept: image/gif

1、离散类型
MIME 类型可以直接用于描述对象类型, 也可以用于描述其他对象类型的集合或类
型包。 如果直接用 MIME 类型来描述某个对象类型, 它就是一种离散类型(discrete
type)。 其中包括文本文件、 视频和应用程序特有的文件格式。
2、复合类型
如果 MIME 类型描述的是其他内容的集合或封装包, 这种 MIME 类型就被称为复合
类型(composite type)。 复合类型描述的是封装包的格式。 将封装包打开时, 其中
包含的每个对象都会有其各自的类型。
3、多部分类型
多部分媒体类型是复合类型。 多部分对象包含多个组件类型。 下面是一个多部分 /
混合内容实例, 每个组件都有自己的 MIME 类型:

Content-Type: multipart/mixed; boundary=unique-boundary-1
--unique-boundary-1
Content-type: text/plain; charset=US-ASCII
Hi there, I'm some boring ASCII text...
--unique-boundary-1
Content-Type: multipart/parallel; boundary=unique-boundary-2
--unique-boundary-2
Content-Type: audio/basic
... 8000 Hz single-channel mu-law-format
audio data goes here ...
--unique-boundary-2
Content-Type: image/jpeg
... image data goes here ...
--unique-boundary-2--
--unique-boundary-1
Content-type: text/enriched
This is <bold><italic>enriched.</italic></bold>
<smaller>as defined in RFC 1896</smaller>
Isn't it <bigger><bigger>cool?</bigger></bigger>
--unique-boundary-1
Content-Type: message/rfc822
From: (mailbox in US-ASCII)
To: (address in US-ASCII)
Subject: (subject in US-ASCII)
Content-Type: Text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: Quoted-printable
... Additional text in ISO-8859-1 goes here ...
--unique-boundary-1--

4、语法
如前所述, MIME 类型由主类型、 子类型和可选参数的列表组成。
主类型可以是预定义类型、 IETF 定义的扩展标记, 或者(以“x-” 开头的) 实
验性标记。 表 D-1 列出了一些常见的主类型。

表D-1 常见的主MIME类型

类型 描述
application 应用程序特有的内容格式(离散类型)
audio 音频格式(离散类型)
chemical 化学数据集(离散 IETF 扩展类型)
image 图片格式(离散类型)
message 报文格式(复合类型)
model 三维模型格式(离散 IETF 扩展类型)
multipart 多部分对象集合(复合类型)
text 文本格式(离散类型)
video 视频电影格式(离散类型)

子类型可以是主类型( 比如, “text/text”)、 IANA 注册的子类型, 或者是( 以“x-”
开头的) 实验性扩展标记。
类型和子类型都是由 US-ASCII 字符的一个子集构成的。 空格和某些保留分组以及
标点符号称为“tspecials”, 它们是控制字符, 不能用于类型和子类型名。
RFC 2046 定义的语法如下所示:

TYPE := "application" | "audio" | "image" | "message" | "multipart" |
"text" | "video" | IETF-TOKEN | X-TOKEN
SUBTYPE := IANA-SUBTOKEN | IETF-TOKEN | X-TOKEN
IETF-TOKEN := <extension token with RFC and registered with IANA>
IANA-SUBTOKEN := <extension token registered with IANA>
X-TOKEN := <"X-" or "x-" prefix, followed by any token>
PARAMETER := TOKEN "=" VALUE
VALUE := TOKEN / QUOTED-STRING
TOKEN := 1*<any (US-ASCII) CHAR except SPACE, CTLs, or TSPECIALS>
TSPECIALS := "(" | ")" | "<" | ">" | "@" |
"," | ";" | ":" | "\" | <"> |
"/" | "[" | "]" | "?" | "="
相关标签: MIME HTTP