POST /upload.do HTTP/1.1
User-Agent: SOHUWapRebot
Accept-Language: zh-cn,zh;q=0.5
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Content-Length: 60408
Content-Type:multipart/form-data; boundary=ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC
Host: www.sohu.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
[......][......][......][......]...........................
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
[圖片二進制數據]
是http請求中的application/x-www-from-urlencoded,會將表單內的數據轉換為鍵值對,&分隔。
當form的action為get時,瀏覽器用x-www-form-urlencoded的編碼方式,將表單數據編碼為
(name1=value1&name2=value2…),然后把這個字符串append到url后面,用?分隔,跳轉
到這個新的url。
當form的action為post時,瀏覽器將form數據封裝到http body中,然后發送到server。
這個格式不能提交文件。
raw
可以上傳任意格式的文本,可以上傳text、json、xml、html、javascript等
等同於Content-Type:application/octet-stream,只可上傳二進制數據,通常用來上傳文件,由於沒有鍵值,所以一次只能上傳一個文件。
1、form-data:
就是http請求中的multipart/form-data,它會將表單的數據處理為一條消息,以標簽為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳文件。當上傳的字段是文件時,會有Content-Type來說明文件類型;content-disposition,用來說明字段的一些信息;
由於有boundary隔離,所以multipart/form-data既可以上傳文件,也可以上傳鍵值對,它采用了鍵值對的方式,所以可以上傳多個文件。
2、x-www-form-urlencoded:
就是application/x-www-from-urlencoded,會將表單內的數據轉換為鍵值對,比如,name=Java&age = 23
3、raw
可以上傳任意格式的文本,可以上傳text、json、xml、html等
4、binary
相當於Content-Type:application/octet-stream,從字面意思得知,只可以上傳二進制數據,通常用來上傳文件,由於沒有鍵值,所以,一次只能上傳一個文件。
重點:
multipart/form-data與x-www-form-urlencoded區別
multipart/form-data:既可以上傳文件等二進制數據,也可以上傳表單鍵值對,只是最后會轉化為一條信息;
x-www-form-urlencoded:只能上傳鍵值對,並且鍵值對都是間隔分開的