基于form-data请求格式详解
form-data请求格式
multipart/form-data是基于post方法来传递数据的,并且其请求内容格式为Content-Type: multipart/form-data,用来指定请求内容的数据编码格式。另外,该格式会生成一个boundary字符串来分割请求头与请求体的,具体的是以一个boundary=${boundary}来进行分割,伪码如下:
1
2
3
4
5
6
7
8
|
... Content-Type: multipart/form-data; boundary=${boundary} --${boundary} ... ... --${boundary}-- |
上面boundary=${boundary}之后就是请求体内容了,请求体内容各字段之间以--${boundary}来进行分割,以--${boundary}--来结束请求体内容。
具体可以参考下面例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
POST http: //www.example.com HTTP/1.1 Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyb1zYhTI38xpQxBK ------WebKitFormBoundaryyb1zYhTI38xpQxBK Content-Disposition: form-data; name= "city_id" 1 ------WebKitFormBoundaryyb1zYhTI38xpQxBK Content-Disposition: form-data; name= "company_id" 2 ------WebKitFormBoundaryyb1zYhTI38xpQxBK Content-Disposition: form-data; name= "file" ; filename= "chrome.png" Content-Type: image/png PNG ... content of chrome.png ... ------WebKitFormBoundaryyb1zYhTI38xpQxBK-- |
form-data格式一般是用来进行文件上传的。使用表单上传文件时,必须让
表单的 enctype 等于 multipart/form-data,因为该值默认值为application/x-www-form-urlencoded。