multipart/form-data
multipart/form-data
的设计正是为了解决 application/x-www-form-urlencoded
在传输复杂数据时的局限性。以下是更详细的解析和补充说明:
1. 设计背景与核心问题
-
application/x-www-form-urlencoded
的局限性:
该编码会将所有表单数据转换为键值对(如key1=value1&key2=value2
),并通过 URL 编码处理特殊字符(如空格转为%20
)。虽然适合简单文本传输,但在以下场景效率低下:- 二进制数据(如图片、文件):需要先进行 Base64 编码,导致数据体积膨胀约 33%。
- 非 ASCII 字符:需逐字符转义,增加额外计算和传输开销。
- 大数据量:编码后的请求体可能超出服务器默认限制(如 Nginx 的
client_max_body_size
),导致传输失败。