精华内容
下载资源
问答
  • form-data: 就是multipart/form-data,将表单内要上传的数据,处理为一条消息,以标签为单元,一个个的隔开。既可以上传键值对,也可以上传文件。 multipart/form-data与x-www-form-urlencoded区别就是,multipart/...

    1、form-data: 

                       就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;

    由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

                     

    2、x-www-form-urlencoded:

                 就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对,比如,name=java&age = 23

    3、raw

                可以上传任意格式的文本,可以上传text、json、xml、html等

    4、binary

              相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。

    multipart/form-data与x-www-form-urlencoded区别

                   multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;

                   x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

    预览代码

    postman有个很好用的功能预览代码,点击右侧code,选择版本

     

     

    参考资料:postman doc

    请关注个人公众号

    个人公众号

    展开全文
  • 主要介绍了Python发送form-data请求及拼接form-data内容的方法,文中采用的是requests的方式发送multipart/form-data请求,需要的朋友可以参考下
  • multipart/form-data: 1、既可以提交普通键值对,也可以提交文件键值对,也就是说可以混合提交,而且提交文件可以提交多个。 2、HTTP规范中的Content-Type不包含此类型,只能用在POST提交方式下,属于http客户端...

    情景再现:

    上传文件到.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格式,

     

    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、很少使用

     

    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

     

     

     

     

     

    参考:

    HTTP Content-type对照表

     

    9年全栈开发经验,请关注个人公众号

     

     

    展开全文
  • HTTP协议之multipart/form-data请求分析

    万次阅读 多人点赞 2012-01-06 15:36:34
    无意中发现了一个巨牛的人工智能教程,忍...首先来了解什么是multipart/form-data请求: 根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还...

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。

    首先来了解什么是multipart/form-data请求:

    根据http/1.1 rfc 2616的协议规定,我们的请求方式只有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE等,那为为何我们还会有multipart/form-data请求之说呢?这就要从头来说了。

    http协议大家都知道是规定了以ASCII码传输,建立在tcp、ip协议之上的应用层规范,规范内容把http请求分为3个部分:状态行,请求头,请求体。所有的方法、实现都是围绕如何运用和组织这三部分来完成的。换句话来说就是万变不离其中,只要我们了解了http请求的组成部分后,自然就可以应变任何实际工作中的需求和问题了。

    关于状态行,请求头,请求体等三部分的具体内容,大家可以参考官方的协议文档http://www.faqs.org/rfcs/rfc2616.html,这里主要分析multipart/form-data请求具体是怎么一回事。

    既然http协议本身的原始方法不支持multipart/form-data请求,那这个请求自然就是由这些原始的方法演变而来的,具体如何演变且看下文:

    • multipart/form-data的基础是post请求,即基于post请求来实现的
    • multipart/form-data形式的post与普通post请求的不同之处体现在请求头,请求体2个部分

    multipart/form-data请求头:

    必须包含Content-Type信息,且其值也必须规定为multipart/form-data,同时还需要规定一个内容分割符用于分割请求体中不同参数的内容(普通post请求的参数分割符默认为&,参数与参数值的分隔符为=)。具体的头信息格式如下:

    Content-Type: multipart/form-data; boundary=${bound}    

    其中${bound} 是一个占位符,代表我们规定的具体分割符;可以自己任意规定,但为了避免和正常文本重复了,尽量要使用复杂一点的内容。如:--------------------56423498738365

    样例:

    Content-Type: multipart/form-data; boundary=--------------------56423498738365


    multipart/form-data请求体:

    它也是一个字符串,不过和普通post请求体不同的是它的构造方式。普通post请求体是简单的键值对连接,格式如下:

    k1=v1&k2=v2&k3=v3

    而multipart/form-data则是添加了分隔符、参数描述信息等内容的构造体。具体格式如下:

    ${bound}
    Content-Disposition: form-data; name="Filename"
    
    HTTP.pdf
    ${bound}
    Content-Disposition: form-data; name="file000"; filename="HTTP协议详解.pdf"
    Content-Type: application/octet-stream
    
    %PDF-1.5
    file content
    %%EOF
    ${bound}
    Content-Disposition: form-data; name="Upload"
    
    Submit Query
    ${bound}--

    其中${bound}就是之前请求头信息中的分割符,如果头信息中规定为123,那么这里也要为123(其作用等同于普通post请求中的&符号的作用,即分割参数)。很明显如果按照之前请求头的样例来,则这里的${bound}值应该替换为--------------------56423498738365,注意最后一个${bound}后需要固定添加两个横杆--

    另外可以很容易的看出,这个请求体被分隔符划分为3个部分,而每个部分其实就是一个参数的键值描述(其作用等同于普通post请求的k1=v1的部分),但对参数信息的描述可以比普通post请求更加丰富,这就是为什么multipart/form-data能发送文件的原因。

    每一个部分都是以分隔符开始的,接着是该部分内容的描述信息,然后是一个回车,最后是描述信息的具体内容。如果传送的内容是一个文件的话,那么还会包含文件名信息,以及文件内容的类型;上面的第二个小部分其实是一个文件体的结构,最后的分割符后会以--结尾,表示请求体结束。

    综上,可以知道要发送一个multipart/form-data的请求,其实任何支持post请求的工具或语言都可以支持,只是自己要稍微包装一下便可。

     

    参考资料:

    百度百科: http://baike.baidu.com/view/9472.htm  

    http1.1协议规范: http://www.faqs.org/rfcs/rfc2616.html

    分析工具:httpAnalyzer

     

    ==========================纯文本格式分割线=========================

     

    Header = {"Content-type" : "multipart/form-data, boundary=AaB03x"}
    
    Data =	"--AaB03x\r\n" +
    		"content-disposition: form-data; name=\"field1\"\r\n" +
    		"\r\n" + 
    		"Joe Blow\r\n" +
    		"--AaB03x\r\n" +
    		"content-disposition: form-data; name="pics"; filename=\"file1.txt\"\r\n" +
    		"Content-Type: text/plain\r\n" +
    		"\r\n" +
    		"...binary contents of file1.txt ...\r\n" +
    		"--AaB03x--\r\n"

    其中:...binary contents of file1.txt ... 要替换成真实的文件二进制内容。

    ===========================请求代码分割线============================

     

     

    如何使用Python发送multipart/form-data请求,请查看 http://blog.csdn.net/five3/article/details/74913742

    展开全文
  • postman中 form-data、x-www-form-urlencoded、raw、binary操作

    万次阅读 多人点赞 2018-01-31 20:43:19
    RD一般在测试接口时优先会选择谷歌得...一:form-data 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段...

    RD一般在测试接口时优先会选择谷歌得postman工具

    postman的Body里有:form-data、x-www-form-urlencoded、raw、binary类型

    具体时说明意思呢?

     

    一:form-data

    就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;

    由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

     

    二:x-www-form-urlencoded

    application/x-www-from-urlencoded,会将表单内的数据转换为键值对,如:name=leyangjun&age =28&work=meituan

     

    三:raw

    可上传任意格式的文本,可以上传text、json、xml、html等各种文本类型

    四:binary

              等同于Content-Type:application/octet-stream,只可上传二进制数据,通常用来上传文件,由于没有键值,所以一次只能上传一个文件。

     

    注意:

     

    form-data与x-www-form-urlencoded不同之处在于(multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息; x-www-form-urlencoded:只能上传键值对,且键值对都是间隔分开。)

     

    展开全文
  • 上传文件到服务器的方式种类有很多,今天我们这里讲一讲Content-Type为multipart/form-data类型的方式上传文件时要注意的地方,我们以上传.xlsx表格为例。 直接上代码,不啰嗦 import requests from requests_...
  • 对multipart/form-data请求的参数处理,是先上传文件,再获取参数的。 因为multipart/form-data本身就是可以把文件当参数上传的,可能是考虑到缓存或者方便处理文件类型的参数,所以采用了临时文件的处理方式。 ...
  • 1、form-data方式。 表示http请求中的multipart/form-data方式,会将表单的数据处理为一条消息,用分割符隔开,可以上传键值对或者上传文件;比如按照如下方式传输提交数据。对于一段utf8编码的字节...
  • 使用multipart/form-data方式提交数据与普通的post方式有一定区别。multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,其值必须为multipart/form-data。另外还需要规定一个内容分割符用于分割...
  • multipart/form-data 获取form-data数据--java

    千次阅读 2018-11-27 13:08:34
    格式类似于下面这样:用request.getParameter是取不到数据的,这时需要通过request.getInputStream来取数据,不过取到的是个InputStream,所以无法直接获取指定的表单项(需要自己对取到的流进行解析,才能得到表单...
  • 主要介绍了python实现发送form-data数据的方法,结合实例形式分析了Python发送form-data数据的相关操作步骤、实现方法与注意事项,需要的朋友可以参考下
  • application/x-www-form-urlencoded post的默认请求 需要把对象参数序列化为字符串参数 ...multipart/form-data 不转码,适合传输长字节(如文件) 请求参数放在请求体里 不在地址栏显示参数,安全性高 ...
  • 1、post数据结构: Request Payload ------WebKitFormBoundary3...Content-Disposition: form-data; name="type" post ------WebKitFormBoundary3wELd4ULBH0cBXBj Content-Disposition: form-dat...
  • post使用form-data和x-www-form-urlencoded的本质区别

    万次阅读 多人点赞 2019-01-10 14:53:33
    一、application/x-www-form-urlencoded 1、它是post的默认格式,使用js中URLencode转码方法。包括将name、value中的空格替换为加号;将非ascii字符做百分号编码;将input的name、value用‘=’连接,不同的input...
  • java实现postman中form-data传参方式

    万次阅读 2019-05-24 15:31:55
    1.form-data form-data主要是以键值对的形式来上传参数,同时参数之间以&分隔符分开,同时也可以上传文件,文件上传要指定文件类型,具体可以看下面的图。 2.x-www-form-urlencode 这种参数的传递与form-data...
  • vue发送form-data数据格式请求

    万次阅读 2019-11-05 11:06:49
    经过对比,发现旧项目中的请求数据格式为form-data格式,而vue中的请求数据格式为json格式,于是,我就在vue的axios请求时进行了配置,将它的请求数据格式改为form-data格式,具体如下: 设置headers请求头: ... ...
  • postman中form-data、x-www-form-urlencoded、raw、binary的区别 在日常开发中,通常会因为提交数据的方式不同而导致各种各样的问题,归根结底是因为未能正确认识到POST方式上传数据的几种方式的区别。所以很有必要...
  • DELETE下选择form-data,后台无法接收到数据。所有条件都相同,将form-data换为x-www-form-urlencoded后就可以接收,是什么原因?查询相关资料发现x-www-form-urlencoded相较于form-data,可以传文件格式,但与此处...
  • 对multipart/form-data请求参数的处理 对application/x-www-form-urlencoded请求参数的处理 前言 我们用@RequestMapping标识一个Web请求的映射,可以标识在方法上,当我们向服务器发送一个请求时,由Spring解析...
  • java post请求调用参数格式为form-data的接口

    万次阅读 热门讨论 2019-06-14 13:34:57
    接口参数使用postman调用如图所示,只能使用form-data格式调用 public static String doPost(String url, HashMap<String, String> map) throws Exception { String result = ""; ...
  • 在PostMan中用Post方式,Body有form-data,x-www-form-urlencoded,raw,binary四种。 其中raw又分以下7种。 现在来区分一下: form-data 是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以...
  • c#没有现成的multipart/form-data库,自己封的一个demo供参考。
  • 主要介绍了java模拟发送form-data的请求方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 请求方式为 form-data/x-www-form-urlencoded 等表单类型时,您可以通过以下方式传递数组。 情况2: 请求方式为application/json时,您可以通过以下方式传递数组。 区别: 不同请求方式的后台接收数据方式不同,请您...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 702,175
精华内容 280,870
关键字:

form-data