什么是http多部分请求?

Meg*_*anX 278 multipart http-headers

我已经写了一段时间的iPhone应用程序,将数据发送到服务器,接收数据(通过HTTP协议),而不用考虑太多.大多数情况下,我理论上熟悉流程,但我不太熟悉的部分是HTTP多部分请求.我知道它的基本结构,但它的核心是我.

似乎每当我发送不同于纯文本(如照片,音乐)的东西时,我都必须使用多部分请求.有人可以简单地向我解释为什么使用它以及它的优点是什么?

如果我使用它,为什么以这种方式发送照片更好?

Igg*_*ggy 266

HTTP多部分请求是HTTP客户端构造的HTTP请求,用于将文件和数据发送到HTTP服务器.浏览器和HTTP客户端通常使用它将文件上载到服务器.

  • 困难的部分是理解为什么它被称为*multipart request*,而不是像*file upload request*那样更明显的东西. (79认同)
  • OP需要一种哲学方法和答案.这个答案并不是解释"为什么"的一部分.它更多的是"什么"部分.我不是低调的忠实粉丝,但我认为这个答案不是OP想要的,我搜索过. (21认同)
  • 内容类型"application/x-www-form-urlencoded"对于发送大量二进制数据或包含非ASCII字符的文本效率低下.内容类型"multipart/form-data"应该用于提交包含文件,非ASCII数据和二进制数据的表单.原始资料 - http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2 (6认同)
  • 只想添加_multipart表单数据字段按顺序发送.这不是显而易见的事情 - 我在这里添加了一个链接列表:https://github.com/balderdashy/skipper/blob/master/README.md#the-big-assumption-field-order如果我得到一些是时候使用PhantomJS/webkit组建一个测试用例,我也会在那里添加链接.浏览器遵循规范的这一部分,甚至可以追溯到IE6. (3认同)
  • 此处提供有关萤火虫屏幕截图的更多详细信息:http://www.cubicrace.com/2016/05/upload-files-https-using-java.html (2认同)

小智 18

正如官方规范(https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html)所说," 一个或多个不同的数据集合在一个整体中 ".因此,当照片和音乐作为问题中提到的多部分消息处理时,可能还存在一些纯文本元数据,因此使得请求包含不同类型的数据(二进制,文本),这意味着使用multipart.

  • 我不认为是这样。上传图片时,整个图片(包括元数据)将是请求正文中的*一组*数据。它仍然是一个多部分请求,即使主体中只有一个部分。您还可以创建一次上传多个文件的请求。 (6认同)
  • @DarioSeidl 标准假设您可能正在从网络表单提交文件上传,除了文件上传本身之外,它还可以包括其他数据字段。例如,除了原始文件名之外,用户可能还包括描述。Multipart 还处理与特定原始“文件”的概念无关的通用二进制 blob。 (6认同)