MIME类型解析

MIME(Multipurpose Internet Mail Extensions)多用途网络邮件扩展类型,可被称为Media type或Content type,

它设定某种类型的文件当被浏览器打开的时候需要用什么样的应用程序,多用于HTTP通信和设定文档类型例如HTML。

之所以叫多用途网络邮件扩展类型,因为它最早被用于电子邮件系统,后用于浏览器,服务器将此类型名放入传给浏览器的数据中以告诉浏览器用什么样的插件打开它

MIME组成:(type/subtype; parameter)) 主类型+子类型+参数(可选)也可称为信息头+段头,这种称为更接近于“邮件”的概念

写法上,传统写法是全小写,但其本身对大小写不敏感

当前被认可的主类型包括: application text image multipart audio example font message model multipart video

子类型也由媒体类型组成,但它也能包含其他内容,例如前缀、作者名。

备注: 写法上注意;与后面的参数之间有空格

例如: text/html; charset=UTF-8

常见MIME类型:

application: 某种二进制附件,对于没有subtype的情况,默认是application/octet-stream

text: 文本,理论上可读,对于没有subtype的情况,默认是text/plain

image: 图像

audio: 音频

video: 视频

multipart: 多部分文档文件(复合文档文件)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面是详细介绍

application/octet-stream 未知的应用程序文件

application/json json数据

text/plain 未知的文本文件(纯文本文件),浏览器会认为这是可以直接显示的

注: 浏览器分辨文件是基于MIME的,而不会把文件打开查看是否是其他类型,例如用link链接了一个标记为text/plain的文件,就算此文件是css文件,就算其后缀是.css,浏览器依旧不认

text/css css文件

text/html HTML文件

image/gif gif文件

常见的还有image/jpeg、image/png、image/svg

很多浏览器支持icon image/x-icon

multipart/form-data 多用于form表单提交,其中multipart即多部分文档,这里提供一个例子解析何为多部分文档

<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--
View Code

它通过分割线将内容分割成不同部分,每部分有自己的实体和请求头,因为被分割了,所以被称为多部分文档。

这里的boundary是一个分隔符,可自定义,为了不和正常文本相混淆,一般设得复杂些,例如 ---------------------6354444552345。

注意: 窗口数据仅一条,用分割线和换行符隔开,这是它与application/x-www-form-urlencoded的很大区别

application/x-www-form-urlencoded

与前者类似,注意区别:

1.窗口数据被编码为键值对;

2.当表单中包含文件上传时只能用multipart/form-data;

3.multipart/form-data只支持post

关于具体区别,可移步: https://www.lvtao.net/dev/1179.html

备注: jquery默认content-type为application/x-www-form-urlencoded,这样能应付大多数情况

原文地址:https://www.cnblogs.com/yanze/p/7767228.html