资源上传为什么要用multipart/form-data而不是其他?

325 阅读1分钟

为了解决浏览器/服务器对url长度限制的问题,因此可以采用application/x-www-form-urlencoded或者application/json以及multipart/form-data这三种形式来处理请求实体,也就是通过添加请求头Request Header来告诉服务器应该用对应的方法去处理请求实体。

那么问题来了,较大的资源,比如图片、音视频为什么要用multipart/form-data呢?

这里先分清一下通用的这几种请求实体类型:

application/x-www-form-urlencoded => a=1&b=2 => url编码 => a%3D1%26b%3D2

application/json => JSON.stringify({a: 1, b: 2})

multipart/form-data => 采用boundary分隔符分隔,不需要对实体内容进行编码,也控制了发送实体的大小