MIME - 多用途互联网邮件扩展

维基百科对 MIME 的定义
RFC 文档
完整的 MIME 类型列表可以 参考 MDN参考 W3schoolIANA 官方机构的列表
MIME 语法及结构

1. MIME 概述

HTTP 协议使用 MIME 类型(而不是文件扩展名)来确定文档类型。

MIME(Multipurpose Internet Mail Extensions)是一个互联网标准,用来表示文档的性质和格式。它扩展了电子邮件标准,使其能够支援:

非ASCII字符文本;
非文本格式附件(二进制、声音、图像等);
由多部分(multiple parts)组成的消息体;
包含非ASCII字符的头信息(Header information)。这个标准被定义在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。

2. MIME 语法

type/subtype

MIME 由类型与子类型两个字符串组成,不允许空格。type 表示可以被分为复数子类的独立类型。subtype 表示细分后的每个类型。MIME 类型对大小写不敏感,通常都是小写。
使用时,用 Content-Type 指定类型,例如:

Content-Type: [type]/[subtype]; parameter

Content-Type:text/css; charset=utf-8
parameter 用来指定附加信息,通常是用于指定 text 文本的编码方式的 charset 参数。MIME 每个 type 都有默认的 subtype,不能确定消息的 subtype 的情况下,消息被看作默认的 subtype 进行处理。text 默认是 text/plain,application 默认是 application/octet-stream,multipart 默认是 multipart/mixed。

2.1 MIME 的独立类型

独立类型对文件分类,可以是如下之一:

类型描述典型示例
text普通文本,可读text/plain, text/html, text/css, text/javascript
image图像,动态图(比如 gif)image/gif, image/png, image/jpeg, image/bmp, image/webp
audio音频文件audio/mpeg, audio/webm, audio/ogg, audio/wav
video视频文件video/webm, video/ogg
application二进制数据application/octet-stream, application/vnd.mspowerpoint,
application/xml, application/pdf,application/json
multipart多部分消息,可以是不同类型multipart/form-data,multipart/byteranges
messageE-mail消息

2.2 Multipart 类型

multipart/form-data
multipart/byteranges

Multipart 类型表示文档中含有多个部分。multipart/form-data 可以使用 HTML Forms 和 POST 方法,此外 multipart/byteranges使用状态码206 Partial Content来发送整个文件的子集,而HTTP不能处理的复合文件使用一个特殊的方式:将信息直接传送给浏览器(这时可能会建立一个“另存为”窗口,但是却不知道如何去显示内联文件。)

2.2.1 multipart/form-data (常用)

multipart/form-data 可用于 HTML Form 表单提交。如果要上传文件 file,则必须在表单中指定 enctype:"multipart/form-data"。作为多部分文档格式,multipart/form-data 可以同时上传多个不同类型的文件,用边界线(一个由’—-‘开始的字符串)划分出不同部分。每一部分有自己的实体及 HTTP 请求头(Content-Disposition 指定当前部分的文件名和表单中的字段名等信息,Content-Type 指定当前部分的文件类型)。

POST http://xx.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryMTqSEAwmA5xk7oKK

------WebKitFormBoundaryMTqSEAwmA5xk7oKK
Content-Disposition: form-data; name="text"

title
------WebKitFormBoundaryMTqSEAwmA5xk7oKK
Content-Disposition: form-data; name="userImage"; filename="chrome.png"
Content-Type: image/png

PNG ... 此处的图片内容省略 ...

------WebKitFormBoundaryMTqSEAwmA5xk7oKK
Content-Disposition: form-data; name="riskName"

中文
------WebKitFormBoundaryMTqSEAwmA5xk7oKK
Content-Disposition: form-data; name="riskAmounts"

{"1":{"name":"10万","premium":"5","amount":"100000"},"2":{"name":"20万","premium":"8","amount":"200000"}}
------WebKitFormBoundaryMTqSEAwmA5xk7oKK

2.2.2 multipart/byteranges (没用过)

multipart/byteranges 表示把由几部分组成的响应报文发送回浏览器(需要浏览器发出这个请求,且服务器理解并成功处理请求)。当服务器发送状态码 206 Partial Content 时,这个 MIME 类型用于指出这个响应报文由几部分组成,每一个都有其请求范围。每一个不同的部分都有 Content-Type 这样的HTTP头来说明文件的实际类型,以及 Content-Range 来说明当前部分所属的范围。

HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Type: multipart/byteranges; boundary=3d6b6a416f9b5
Content-Length: 385

--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 100-200/1270

eta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="vieport" content
--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 300-400/1270

-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: "Open Sans", "Helvetica
--3d6b6a416f9b5--

3. MIME 类型

对于 text 文件类型若没有特定的 subtype,就使用 text/plain
对于二进制文件类型若没有特定或已知的 subtype,就使用 application/octet-stream

  • application/octet-stream:应用程序文件的默认值。对于未知类型的应用程序文件浏览器一般不会自动执行或询问执行,会当做附件一样来对待(类似在 HTTP 头中设置 Content-Disposition 时,会激活‘文件下载’对话框)。
  • text/plain:文本文件默认值。对于未知类型的文本文件 ,浏览器认为是可以直接展示的。
  • text/css:CSS 文件想要在网页上被解释执行就必须把 MIME 设置为 text/css 。
  • text/html:HTML 内容。
  • 图片类型
    图片类型是在网页中使用的,唯一被广泛识别以及考虑过web安全的类型:
MIME类型图片类型
image/gifGIF图片 (无损耗压缩方面被PNG所替代)
image/jpegJPEG图片
image/pngPNG图片
image/svg+xmlSVG图片(矢量图)

另外的一些图片种类可以在Web文档中找到。比如很多浏览器支持 icon 类型的图标作为 favicons或者类似的图标,并且浏览器在MIME类型中的 image/x-icon 支持ICO图像。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值