情景再现:

上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,content-type是multipart/form-data,后来查了查这是两种不同的内容类型,在http的请求体中,数据组织方式不一样,所以,后台接收失败。

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格式,

[html] view plaincopy
  1. POST http://www.xx.com/myproject/service1
  2. Host: 192.168.0.201:8694
  3. Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
  4. Cache-Control: no-cache
  5. Postman-Token: c3d85a6c-9849-7e3e-5c89-5b994b335b1d
  6. ----WebKitFormBoundary7MA4YWxkTrZu0gW
  7. Content-Disposition: form-data; name="name1"
  8. value1
  9. ----WebKitFormBoundary7MA4YWxkTrZu0gW
  10. Content-Disposition: form-data; name="name2"
  11. value2
  12. ----WebKitFormBoundary7MA4YWxkTrZu0gW
  13. Content-Disposition: form-data; name="file1"; filename="94b5b232gw1ewlx3p595wg20ak0574qq.gif"
  14. Content-Type: image/gif
  15. ----WebKitFormBoundary7MA4YWxkTrZu0gW
  16. Content-Disposition: form-data; name="file2"; filename="1443175219259.jpg"
  17. Content-Type: image/jpeg
  18. ----WebKitFormBoundary7MA4YWxkTrZu0gW

application/octet-stream

1、只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)

2、属于HTTP规范中Content-Type的一种

3、很少使用

application/x-www-form-urlencoded

1、不属于http content-type规范,通常用于浏览器表单提交,数据组织格式:name1=value1&name2=value2,post时会放入http body,get时,显示在在地址栏。

2、所有键与值,都会被urlencoded,请查看urlencoder

数据组织格式

[html] view plaincopy
  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. name11=file1&name2=value2

参考:

HTTP Content-type对照表

multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded相关推荐

  1. vue axios POST请求中参数以form data和request payload形式的原因

    HTTP请求中,如果是get请求,那么表单参数以name=value&name1=value1的形式附到url的后面,如果是post请求,那么表单参数是在请求体中,也是以name=value& ...

  2. 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...

    本文实例讲述了Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法.分享给大家供大家参考,具体如下: HTTP请求中,如果是get请求,那么 ...

  3. form data和request payload的区别

    2019独角兽企业重金招聘Python工程师标准>>> HTML <form> 标签的 enctype 属性 在下面的例子中,表单数据会在未编码的情况下进行发送: < ...

  4. AJAX POST请求中參数以form data和request payload形式在servlet中的获取方式

    HTTP请求中,假设是get请求,那么表单參数以name=value&name1=value1的形式附到url的后面,假设是post请求,那么表单參数是在请求体中,也是以name=value& ...

  5. flux读取不到数据_WebFlux 中form data获取不到参数问题

    Spring WebFlux 中, request.queryParams 只能获取到 查询参数, 对于 form 提交的参数无法进行参数自动装载 处理方式有两种: 一. 自定义 ArgumentRe ...

  6. java request payload_前后端联调之Form Data与Request Payload,你真的了解吗?

    前言 做过前后端联调的小伙伴,可能有时会遇到一些问题.例如,我明明传递数据给后端了,后端为什么说没收到呢?这时候可能就会就会有小伙伴陷入迷茫,本文从chrome-dev-tools(F12调试器)中看 ...

  7. Web前沿—HTML5 Form Data 对象的使用

    XMLHttpRequest Level 2 添加了一个新的接口--FormData.利用 FormData 对象,我们可以通过 JavaScript 用一些键值对来模拟一系列表单控件,我们还可以使用 ...

  8. http协议的Request Payload 和 Form Data 的区别

    Request Payload VS Form Data 前端请求 我看了前端发起的请求,请求正文并不是我熟悉的 Form Data,而是 Request Payload.如图注意下面两个请求的 Co ...

  9. Vue-resource中post请求将data数据以request payload转换为form data的形式

    今天在做项目的时候 需要往api中发送一个json格式的对象,但是怎么改都不行,当然,使用的vue 的 http方法. 而且,开始使用时 vue-resource中post请求时的一个坑,vue-re ...

  10. angularjs中$http模块发送post请求request payload转form data

    背景: ionic+ angularjs+ cordova 在开发一个证书照片删除的时候,后端提供了一个post接口,需要前端将数据转化成form data.而在angularjs中,如果直接用pos ...

最新文章

  1. 从USB闪存驱动器启动 Hiren的BootCD --制作U盘启动盘
  2. jquery+原生js模拟淘宝输入框下拉提示
  3. 十一、Shell 文件包含
  4. 基因组中的趣事(一):这个基因编码98种转录本
  5. [海隆软件][方正电机]IPO,打新股中
  6. 鸿蒙系统电脑模拟运行,安卓游戏在鸿蒙运行被识别为PC端模拟器,鸿蒙生态依然欠缺!...
  7. [原]极域电子教室3个没被发现的bug(V6 2007)
  8. java 暴露接口_Java基于spring暴露接口供外部调用
  9. MATLAB超限邻域滤波
  10. 用5000字长文记录华为仓库服务GaussDB(DWS)上手过程【这次高斯不是数学家】
  11. 使用开源人脸特征提取器进行脸部颜值评分
  12. Android7.0上拍照与选择照片Crash问题
  13. ACurveTracer软件-可兼容多种仪器的测量软件
  14. (三十)AO和GO剖析
  15. error日志显示不全的问题,-XX:-OmitStackTraceInFastThrow
  16. 区块链技术加持下的社交软件又能玩出什么新花样
  17. 第七诫:不可不关注生活和亲近大自然
  18. 我浅浅驻足,徒留深深缠绵
  19. Linux_2 管道(任务间的通信)
  20. (转)Windows应用程序中动态的控制输入法

热门文章

  1. android p ify 三星,Enjarify - Android逆向(二)
  2. r 语言ylim = c(0 1),今日R--条形图(barplot)
  3. Android-7.0-Nuplayer流程图
  4. Android AP模式下获取SSID/PASSWORD(反射机制
  5. Android之Camera预览
  6. Android添加开机完成后脚本(boot_completed)
  7. 阿里云服务器ECS和腾讯云服务器如何安装宝塔面板?
  8. linux服务器学习笔记:如何使用密钥认证机制远程登录linux?
  9. python selenium安装失败_python:学习selenium遇到的坑
  10. 每日三道前端面试题--vue 第三弹