我发现至少有两种方法可以通过API将文件上传到HTTP服务器。
一种是使用multipart/form-data
(这是浏览器原生支持的文件上传HTML输入框的方式),但你也可以在请求体内使用POST
发送文件内容(可能需要正确的Content-Type请求头)。
每种方式的优缺点是什么(不仅限于浏览器)?例如,使用多部分请求可能会更复杂一些,取决于您在编程环境中使用的http或网络库(我在服务器端使用Node.js,在客户端使用Swift)。
我发现至少有两种方法可以通过API将文件上传到HTTP服务器。
一种是使用multipart/form-data
(这是浏览器原生支持的文件上传HTML输入框的方式),但你也可以在请求体内使用POST
发送文件内容(可能需要正确的Content-Type请求头)。
每种方式的优缺点是什么(不仅限于浏览器)?例如,使用多部分请求可能会更复杂一些,取决于您在编程环境中使用的http或网络库(我在服务器端使用Node.js,在客户端使用Swift)。
在协议层面上唯一的区别是,multipart/form-data
请求必须遵守 RFC 2388,而自定义请求体可以是任意的。
从实际角度来看,multipart/form-data
请求通常更大:虽然客户端从技术上允许使用非7位 content-transfer-encoding
,但大多数情况下会使用 base64。 MIME 头会产生额外的开销,如果上传了许多小文件,这可能成为瓶颈。请注意,现有客户端/库中对于 multipart/form-data
文件上传的支持更加广泛。如果您不确定客户端和中间主机(代理服务器)的功能集,请始终提供它作为备用选项。特别要记住,如果您为第三方设计 API,则其他开发人员已经熟悉 multipart/form-data
并且具有可用于处理该请求类型的库。