HTTP 表单提交 vs. 文件上传
· 13 min read

Conceptual Difference
首先要明确:这两种都是 HTTP POST 请求中 Content-Type 头的取值,用于规定客户端(浏览器/前端)如何将表单数据编码后发送给服务端,服务端再对应解码获取数据。
1. 先分别理解两种格式
(1)application/x-www-form-urlencoded
这是 HTML 表单的默认编码格式(如果不手动指定 enctype,表单提交就用这种格式)。
核心特点:
- 会将表单中的键值对数据进行 URL 编码(也叫百分号编码):
- 键和值之间用
=连接,键值对之间用&分隔; - 非 ASCII 字符、特殊字符(空格、
&、=等)会被转换成%XX格式(比如空格转+或%20,中文中转%E4%B8%AD)。
- 键和值之间用
- 所有数据拼接成一个单一的字符串,放在请求体中发送,没有边界分隔符。
- 数据明文传输(请求体可直接查看编码后的字符串),体积紧凑但不支持二进制数据。