文件上传API:多部分/表单数据与正文中的原始内容?

时间:2015-09-01 15:57:05

标签: http file-upload upload

我注意到(至少)有两种方法可以通过API将文件上传到HTTP服务器。

您可以使用multipart/form-data(这是浏览器本身用于文件上传HTML输入的内容),但您也可以POST请求正文中的文件内容(可能具有正确的Content-Type请求)头)。

每种方法的优缺点(一般而言,不是来自浏览器)?

多部分请求 - 取决于您在编程环境中使用的http或网络库(我在服务器端使用Node.js,在客户端使用Swift) - 创建起来似乎有点复杂解析。

1 个答案:

答案 0 :(得分:10)

协议级别的唯一区别是multipart/form-data请求必须遵守RFC 2388,而自定义类型的请求正文可以是任意的。

这样做的实际意义是multipart/form-data请求通常更大:虽然技术上允许客户端使用非7位content-transfer-encoding,但大多数人都使用base64。如果上传了许多小文件,MIME标头会产生额外的开销,成为瓶颈。请注意,现有客户端/库中对multipart/form-data文件上载的支持要广泛得多。如果您不完全确定客户端和中间主机(代理服务器)的功能集,则应始终将其作为后备提供。特别要记住的是,如果您正在为第三方设计API,那么其他开发人员已经熟悉multipart/form-data并且手头有库可以使用它。

相关问题