1 概述
经常会看到MIME类型,那么到底MIME是什么呢?
MIME是一种媒体类型( Multipurpose Internet Mail Extensions 或 MIME 类型 ),MIME是一种标准,是用来表示文档、文件或字节流的性质和格式,也就是告诉浏览器等这个文件的类型,目的跟文件扩展名类似,但是更加具体和重要。
重要:浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理URL,因此Web服务器在响应头中添加正确的MIME类型非常重要。如果配置不正确,浏览器可能会曲解文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。
2 MIME的语法(构造方式)
语法:type/subtype (大类型/小类型)
MIME的组成结构非常简单;由类型与子类型两个字符串中间用’/'分隔而组成。不允许空格存在。type 表示可以被分多个子类的独立类别。subtype 表示细分后的每个类型。
MIME类型对大小写不敏感,但是传统写法都是小写
3 大类别
类型 | 描述 | 示例 |
---|---|---|
text | 表明文件是普通文本,理论上是人类可读 | text/plain, text/html, text/css, text/javascript |
image | 表明是某种图像。不包括视频,但是动态图(比如动态gif)也使用image类型 | image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.icon |
audio | 表明是某种音频文件 | audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav |
video | 表明是某种视频文件 | video/webm, video/ogg |
application | 表明是某种二进制数据 | application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf |
还有一种是复合文件的类型,如multipart/form-data
multipart/byteranges,这里暂不说明,在下一节进行说明
4 重要的MIME类型
4.1 application/octet-stream
这是应用程序文件的默认值。意思是 未知的应用程序文件 ,浏览器一般不会自动执行或询问执行。浏览器会像对待 设置了HTTP头Content-Disposition 值为 attachment 的文件一样来对待这类文件。
4.2 text/plain
文本文件默认值。即使它意味着未知的文本文件,但浏览器认为是可以直接展示的
4.3 text/css
在网页中要被解析为CSS的任何CSS文件必须指定MIME为text/css。通常,服务器不识别以.css为后缀的文件的MIME类型,而是将其以MIME为text/plain 或 application/octet-stream 来发送给浏览器:在这种情况下,大多数浏览器不识别其为CSS文件,直接忽略掉。特别要注意为CSS文件提供正确的MIME类型。
4.4 text/html
所有的HTML内容都应该使用这种类型。XHTML的其他MIME类型(如application/xml+html)现在基本不再使用(HTML5统一了这些格式)
4.5 JavaScript types
application/javascript
application/ecmascript
4.6 图片类型
只有一小部分图片类型是被广泛支持的,Web安全的,可随时在Web页面中使用的:
- image/gif GIF 图片 (无损耗压缩方面被PNG所替代)
- image/jpeg JPEG 图片
- image/png PNG 图片
- image/svg+xml SVG图片 (矢量图)
4.7 音频与视频类型
在web环境最常用的视频文件的格式,是以下这些这些文件类型:
audio/wave
audio/wav
audio/x-wav
audio/x-pn-wav
上面四个都是音频流媒体文件。一般支持PCM音频编码 (WAVE codec “1”) ,其他解码器有限支持(如果有的话)。
audio/webm WebM 音频文件格式。Vorbis 和 Opus 是其最常用的解码器。
video/webm 采用WebM视频文件格式的音视频文件。VP8 和 VP9是其最常用的视频解码器。Vorbis 和 Opus 是其最常用的音频解码器。
audio/ogg 采用OGG多媒体文件格式的音频文件。 Vorbis 是这个多媒体文件格式最常用的音频解码器。
video/ogg 采用OGG多媒体文件格式的音视频文件。常用的视频解码器是 Theora;音频解码器为Vorbis 。
application/ogg 采用OGG多媒体文件格式的音视频文件。常用的视频解码器是 Theora;音频解码器为Vorbis 。
application/json application/json (MIME_type)
4.8 multipart/form-data(重要)
multipart/form-data 可用于HTML表单从浏览器发送信息给服务器。作为多部分文档格式,它由边界线(一个由’–'开始的字符串)划分出的不同部分组成。每一部分有自己的实体,以及自己的 HTTP 请求头,Content-Disposition和 Content-Type 用于文件上传领域,最常用的 (Content-Length 因为边界线作为分隔符而被忽略)。
如下所示的表单:
<form action="http://localhost:8000/" method="post" enctype="multipart/form-data">
<input type="text" name="myTextField">
<input type="checkbox" name="myCheckBox">Check</input>
<input type="file" name="myFile">
<button>Send the file</button>
</form>
会发送如下的代码
POST / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
Content-Length: 465
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myTextField"
Test
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myCheckBox"
on
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myFile"; filename="test.txt"
Content-Type: text/plain
Simple file.
-----------------------------8721656041911415653955004498--
4.10 multipart/byteranges
multipart/byteranges 用于把部分的响应报文发送回浏览器。当发送状态码206Partial Content 时,这个MIME类型用于指出这个文件由若干部分组成,每一个都有其请求范围。就像其他很多类型Content-Type使用分隔符来制定分界线。每一个不同的部分都有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--
文章参考
MIME 类型