x-www-form-urlencoded 和 multipart/form-data 的区别和联系

162 阅读1分钟

x-www-form-urlencodedmultipart/form-data 都是 HTTP 请求中的请求体(request body)的编码格式,但它们有一些不同点:

  1. 编码方式不同 x-www-form-urlencoded 使用 URL 编码方式对请求体进行编码,即将请求参数按照 key=value 的格式进行编码,并用 & 符号连接起来。例如,name=John&age=30 就是一个 x-www-form-urlencoded 格式的请求体。 multipart/form-data 则是一种多部分的编码方式,可以用于上传文件等二进制数据。它将请求体拆分成多个部分,每个部分都有自己的标识符和类型,最后用一个特定的分隔符将它们连接起来。例如:
plaintextCopy code
Content-Type: multipart/form-data; boundary=--------------------------1234567890
--------------------------1234567890
Content-Disposition: form-data; name="text"
hello, world!
--------------------------1234567890
Content-Disposition: form-data; name="file"; filename="example.txt"
Content-Type: text/plain
This is an example file.
--------------------------1234567890--
  1. 用途不同 x-www-form-urlencoded 主要用于提交表单数据等简单的键值对数据,它不支持上传二进制文件等复杂的数据类型。 multipart/form-data 则可以用于上传文件等二进制数据,它可以将请求体拆分成多个部分,每个部分都有自己的标识符和类型,支持上传多个文件以及其他复杂的数据类型。 需要注意的是,虽然 x-www-form-urlencodedmultipart/form-data 有一些不同点,但它们都是标准的 HTTP 请求体的编码格式,而且大多数 Web 框架都支持它们。因此,在实际开发中,我们需要根据具体的需求来选择使用哪种编码格式。