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

相关文章
相关标签/搜索