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

情景再現:html

上傳文件到.net(wcf)後臺時,老是上傳不成功,後臺要求Content-Type是application/octet-stream,我使用multipart/form-data方式,content-type是multipart/form-data,後來查了查這是兩種不一樣的內容類型,在http的請求體中,數據組織方式不同,因此,後臺接收失敗。java

 

multipart/form-data:json

一、既能夠提交普通鍵值對,也能夠提交(多個)文件鍵值對。數組

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

三、一般在瀏覽器表單中,或者http客戶端(java httpclient)中使用。app

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

 

multipart/form-data格式,url

 

 
  1. POST http://www.xx.com/myproject/service1.net

  2. Host: 192.168.0.201:86943d

  3. Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

  4. Cache-Control: no-cache

  5. Postman-Token: c3d85a6c-9849-7e3e-5c89-5b994b335b1d

  6.  
  7. ----WebKitFormBoundary7MA4YWxkTrZu0gW

  8. Content-Disposition: form-data; name="name1"

  9.  
  10. value1

  11. ----WebKitFormBoundary7MA4YWxkTrZu0gW

  12. Content-Disposition: form-data; name="name2"

  13.  
  14. value2

  15. ----WebKitFormBoundary7MA4YWxkTrZu0gW

  16. Content-Disposition: form-data; name="file1"; filename="94b5b232gw1ewlx3p595wg20ak0574qq.gif"

  17. Content-Type: image/gif

  18.  
  19.  
  20. ----WebKitFormBoundary7MA4YWxkTrZu0gW

  21. Content-Disposition: form-data; name="file2"; filename="1443175219259.jpg"

  22. Content-Type: image/jpeg

  23.  
  24.  
  25. ----WebKitFormBoundary7MA4YWxkTrZu0gW


 

 

 

 

application/octet-stream

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

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

三、不多使用

 

application/x-www-form-urlencoded

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

二、全部鍵與值,都會被urlencoded,請查看urlencoder

數據組織格式

 

 
  1. POST http://www.xx.com/myproject/service HTTP/1.1

  2. Host: 192.168.0.201:8694

  3. Content-Type: application/json

  4. Cache-Control: no-cache

  5. Postman-Token: f5f6240c-08d3-8695-9473-607038f71eaa

  6.  
  7. name11=file1&name2=value2


 

 

參考:

HTTP Content-type對照表

原文地址:https://blog.csdn.net/andrewniu/article/details/81533905

相關文章
相關標籤/搜索