【问题标题】:File upload API: Multipart/form-data vs. raw contents in body?文件上传 API:Multipart/form-data 与正文中的原始内容?
【发布时间】:2015-11-26 22:53:51
【问题描述】:

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

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

每种方法的优缺点是什么(总的来说,不是来自浏览器)?

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

【问题讨论】:

标签: http file-upload upload


【解决方案1】:

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

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

【讨论】:

  • 需要一个固执己见的答案,而不是“你根据这些东西来决定”
  • 如有疑问,请使用multipart/form-data
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 2019-09-01
  • 2016-01-27
  • 2011-02-12
相关资源
最近更新 更多