Http-form-data

一、演变

http协议本身的原始方法不支持multipart/form-data请求,是由一些原始的方法演变而来的

1、multipart/form-data基础方法是post,也就是说是由post方法来组合实现的

2、multipart/form-datapost方法的不同之处:请求头,请求体

3、multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,且其值也必须规定为multipart/form-data

4、规定一个内容分割符用于分割请求体中的多个post的内容

具体的头信息如下:Content-Type: multipart/form-data; boundary=${bound},其中${bound} 是一个占位符,代表我们规定的分割符,可以自己任意规定,但为了避免和正常文本重复了,尽量要使用复杂一点的内容。


二、请求体

multipart/form-data的请求体也是一个字符串,不过和post的请求体不同的是它的构造方式,post是简单的name=value值连接,而multipart/form-data则是添加了分隔符等内容的构造体。具体格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--${bound}
Content-Disposition: form-data; name="Filename"
HTTP.pdf


--${bound}
Content-Disposition: form-data; name="file000"; filename="HTTP协议详解.pdf"
Content-Type: application/octet-stream

%PDF-1.5
file content
%%EOF

--${bound}
Content-Disposition: form-data; name="Upload"

Submit Query
--${bound}--