我注意到(至少)有两种方法可以通过API将文件上传到HTTP服务器。
您可以使用multipart/form-data
(这是浏览器本身用于文件上传HTML输入的内容),但您也可以POST
请求正文中的文件内容(可能具有正确的Content-Type请求)头)。
每种方法的优缺点(一般而言,不是来自浏览器)?
多部分请求 - 取决于您在编程环境中使用的http或网络库(我在服务器端使用Node.js,在客户端使用Swift) - 创建起来似乎有点复杂解析。
答案 0 :(得分:10)
协议级别的唯一区别是multipart/form-data
请求必须遵守RFC 2388,而自定义类型的请求正文可以是任意的。
这样做的实际意义是multipart/form-data
请求通常更大:虽然技术上允许客户端使用非7位content-transfer-encoding
,但大多数人都使用base64。如果上传了许多小文件,MIME标头会产生额外的开销,成为瓶颈。请注意,现有客户端/库中对multipart/form-data
文件上载的支持要广泛得多。如果您不完全确定客户端和中间主机(代理服务器)的功能集,则应始终将其作为后备提供。特别要记住的是,如果您正在为第三方设计API,那么其他开发人员已经熟悉multipart/form-data
并且手头有库可以使用它。