我注意到有(至少)两种通过API将文件上传到HTTP服务器的方式。
您可以使用multipart/form-data
(这是浏览器在本地执行的用于文件上传HTML输入的操作),但是您也可以POST
请求正文中的文件内容(也许具有正确的Content-Type请求 header )。
每种方法的优缺点是什么(总的来说,不是来自浏览器)?
例如,多部分请求(取决于您在编程环境中使用的http或网络库(我在服务器端使用Node.js,在客户端使用Swift))创建和解析起来似乎有些复杂。
最佳答案
协议(protocol)级别的唯一区别是multipart/form-data
请求必须遵守RFC 2388,而自定义类型的请求主体可以是任意的。
由此产生的实际含义是,multipart/form-data
请求通常更大:尽管从技术上允许客户端使用非7位content-transfer-encoding
,但大多数情况下仍使用base64。 MIME头会产生额外的开销,如果上载许多小文件,这些开销可能会成为瓶颈。请注意,在现有客户端/库中对multipart/form-data
文件上载的支持远远更加广泛。如果您不确定客户端和中间主机(代理服务器)的功能集,则应始终将其作为备用。尤其要记住,如果您正在为第三方设计API,那么其他开发人员将已经熟悉multipart/form-data
并准备好要使用的库。
关于http - 文件上传API : Multipart/form-data vs.体内的原始内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32336083/