multipart/form-data與application/octet-stream的區別、application/x-www-form-urlencoded

multipart/form-data:

1、既可以提交普通鍵值對,也可以提交(多個)文件鍵值對。

2、HTTP規範中的Content-Type不包含此類型,只能用在POST提交方式下,屬於http客戶端(瀏覽器、java httpclient)的擴展

3、通常在瀏覽器表單中,或者http客戶端(java httpclient)中使用。

頁面中,form的enctype是multipart/form-data,提交時,content-type也是multipart/form-data。

multipart/form-data格式

POST http://www.xx.com/myproject/service1
Host: 192.168.0.201:8694
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Cache-Control: no-cache
Postman-Token: c3d85a6c-9849-7e3e-5c89-5b994b335b1d
 
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="name1"
 
value1
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="name2"
 
value2
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file1"; filename="94b5b232gw1ewlx3p595wg20ak0574qq.gif"
Content-Type: image/gif
 
 
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file2"; filename="1443175219259.jpg"
Content-Type: image/jpeg
 
 
----WebKitFormBoundary7MA4YWxkTrZu0gW

application/octet-stream

1、只能提交二進制,而且只能提交一個二進制,如果提交文件的話,只能提交一個文件,後臺接收參數只能有一個,而且只能是流(或者字節數組)

2、屬於HTTP規範中Content-Type的一種

3、很少使用

let blob = new Blob([resp.body], { type: "application/octet-stream" });

application/x-www-form-urlencoded

1、不屬於http content-type規範,通常用於瀏覽器表單提交,數據組織格式:name1=value1&name2=value2,post時會放入http body,get時,顯示在在地址欄。

2、所有鍵與值,都會被urlencoded,請查看urlencoder

數據組織格式
 

POST http://www.xx.com/myproject/service HTTP/1.1
Host: 192.168.0.201:8694
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: f5f6240c-08d3-8695-9473-607038f71eaa
 
name11=file1&name2=value2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章