1. 什么是Multipart
Multipart
:多部分对象集合。可以容纳多份类型的数据。
看不懂?没关系,看完例子就懂了
2.包含的对象
multipart/form-data
哎呀,这个我熟,传文件必写的。以前只是知道怎么用,却不知道为什么要这么用。看完这篇文章你就懂了multipart/byteranges
1) multipart/form-data
例子:
假设现在有个界面长这样:
当填写了用户名,选择了文件,点击提交后,抓取报文是这样式的:
Content-Type:multipart/form-data;boundary=AaB03x
--AaB03 <!--用户名的部分-->
Content-Disposition:form-data;name="username"
username
--AaB03 <!--文件的部分-->
Content-Disposition:form-data;name="pics";filename="file1.txt"
Content-Type:text/plain
...(file1.txt的数据)...
--AaB03--
boundary=AaB03x
后面的AaB03x
是随机生成的。每两个--AaB03
之间是form
的一个键值对,最后以--AaB03--
表示结尾,也有以--AaB03
表示结尾的。
2) multipart/byteranges
在返回206
状态码时使用,用于返回Range
请求的多部分数据。
例子:
请求:
GET /filename.pdf HTTP/1.1
...
Range:bytes=5000-10000,12000-150000
....
响应:
HTTP/1.1 206 Partial Content
...
Content-Type:multipart/byteranges;boundary=xxxxx
--xxxxx
Content-Type:application/pdf
Content-Range:bytes=5000-10000
...(指定范围的数据)...
--xxxxx
Content-Type:application/pdf
Content-Range:bytes=12000-15000
...(指定范围的数据)...
--xxxxx--