POST 请求中 multipart/form-data application/x-www-form-urlencoded 的区别

Posted 薰衣草

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POST 请求中 multipart/form-data application/x-www-form-urlencoded 的区别相关的知识,希望对你有一定的参考价值。

以 Postman 为工具来看一下这两个编码类型的数据格式,假设我们需要传输的数据为

{
    "name": "test",
    "age": 18
}
  • multipart/form-data
    技术分享图片

我们上传文件的时候通常会选择这个格式,可以看到 Content-Type 一行有个 boundary,这个 boundary 是一个分隔符,可以把它看成 get 请求中的 & ,这个分隔符通常是浏览器生成。由于这个分隔符的存在,我们上传的每个文件数据都会被分隔开,所以可以上传多个文件。

  • application/x-www-form-urlencoded

技术分享图片

可以看到键值对被 & 分隔

浏览器的原生 <form> 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。所以如果我们要使用表单上传文件,必须让 <form> 表单的 enctype 等于 multipart/form-data。

对于一些如 application/json、text/plain 等这些编码,浏览器会原封不动的将数据提交,在 Postman 中的选项是 raw。

原文链接https://blog.csdn.net/zsensei/article/details/80043764

以上是关于POST 请求中 multipart/form-data application/x-www-form-urlencoded 的区别的主要内容,如果未能解决你的问题,请参考以下文章

struts2的文件上传机制

php使用curl的post方法字符串和数组传值的区别

在jQuery中上传之前单击预览按钮时显示图像[重复]

h5中formdata怎么添加file

node-读取图片,content-type如何设置

带有模型的 mvc 上传文件 - 第二个参数发布的文件为空