我已经写了一段时间的iPhone应用程序,将数据发送到服务器,接收数据(通过HTTP协议),而没有考虑太多。从理论上讲,大多数情况下我对过程很熟悉,但是我不太熟悉的部分是HTTP多部分请求。我知道它的基本结构,但是它的核心却使我难以理解。有人可以简要地向我解释为什么使用它以及它有什么优点吗?

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

评论

有关信息,请参见以下链接:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2

#1 楼

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



外观如何

请参阅Multipart Content-Type

请参阅multipart / form-data


评论


只是想补充一下,多部分表单数据字段是按顺序发送的。这不是显而易见的-我在这里添加了链接列表:github.com/balderdashy/skipper/blob/master / ...如果我有时间用PhantomJS / webkit编写一个测试用例,我将添加那里的链接。浏览器遵守规范的这一部分,甚至可以追溯到IE6。

– mikermcneil
2014年8月3日23:20

困难的部分是理解为什么将其称为“多部分请求”,而不是诸如文件上传请求之类的更明显的内容。

–拉斐尔·埃因(Rafael Eyng)
15年3月19日在12:19

OP希望有一种哲学的方法和答案。这个答案没有解释“为什么”部分。更多关于“什么”部分。我不是反对投票的忠实拥护者,但是我认为这个答案不是OP想要的,我一直在寻找。

– Saeed Neamati
15年8月19日在7:47

内容类型“ application / x-www-form-urlencoded”对于发送大量二进制数据或包含非ASCII字符的文本效率不高。内容类型“ multipart / form-data”应用于提交包含文件,非ASCII数据和二进制数据的表单。原始资源-w3.org/TR/html401/interact/forms.html#h-17.13.4.2

– Aditya Aggarwal
2015年11月5日7:55



此处提供有关萤火虫屏幕截图的更多详细信息:cubicrace.com/2016/05/upload-files-https-using-java.html

– Piyush Chordia
16年5月2日在7:13

#2 楼

如官方规范所述,“将一个或多个不同的数据集组合在一个主体中”。因此,当问题中提到的将照片和音乐作为多部分消息处理时,可能还会关联一些纯文本元数据,从而使请求包含不同类型的数据(二进制,文本),这意味着要使用多部分。 br />

评论


我认为并非如此。上载图像时,整个图像(包括元数据)将是请求正文中的一组数据。即使身体只有一部分,它仍然是一个多部分的请求。您也可以创建一个请求,一次上传多个文件。

–达里奥·塞德尔(Dario Seidl)
18-09-29在11:48

@DarioSeidl标准假设您可能正在从Web表单提交文件上传,除了文件上传本身之外,该表单还可以包括其他数据字段。例如,除了原始文件名之外,用户还可以包括描述。 Multipart还处理与特定原始“文件”概念断开连接的通用二进制Blob。

–电离破碎的布里格姆
18-11-15在0:57

#3 楼

我在这里找到了一个很好且相对简短的解释。

多部分请求是一个REST请求,在其实体内部包含多个打包的REST请求