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