为什么传文件要用 multipart/form-data?

直接把文件塞进 body 不行吗?在现场把两者都编出来,一眼看懂 multipart 到底在干嘛

第一步:选一组示例数据

不再让你挑本地文件——选一组内置示例,点「真上传」把它真实发给后端解析。示例内容固定、很小,怎么点都不会卡。

上传的是内置示例文件(内容固定、很小);落地 5 分钟后自动删除。每 IP 每小时限 1GB。
裸 body(application/octet-stream) -
选一组示例,看裸 body 有多「裸」
multipart/form-data(打包) -
这里会逐字节上色:boundary · 头 · 负载
第二步:照着 boundary 解回去(本地往返)
选一组示例后,这里展示把同一个 body 解回结构是否无损
第三步:真服务器按 boundary 解包
点「真上传到服务器」,看后端逐 part 解出每个字段名 / 文件名 / Content-Type / 字节数
打包的关键,不是省带宽,是「给 body 装上结构的边界」。

所有字节数都来自你本地把文件打包后的实际结果;限流与过期规则由后端真实执行。

知乎精选追问的回应:服务器要收到的「所有 part」才拼文件、不能断点续传——都是上层框架/应用的问题,跟 multipart 本身体质无关,见文章。