【问题标题】:What is http multipart request?什么是 http 多部分请求?
【发布时间】:2013-06-02 05:54:53
【问题描述】:

我一直在编写 iPhone 应用程序,发送数据到服务器,接收数据(通过 HTTP 协议),没有考虑太多。大多数情况下我在理论上对流程很熟悉,但我不太熟悉的部分是 HTTP 多部分请求。我知道它的基本结构,但我不知道它的核心。

似乎每当我发送不同于纯文本的内容(如照片、音乐)时,我都必须使用多部分请求。谁能简单解释一下为什么要使用它以及它的优点是什么?

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

【问题讨论】:

标签: http-headers multipart


【解决方案1】:

我找到了一个很好且相对简短的解释here

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

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

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

    【讨论】:

    • 只是想补充一点,多部分表单数据字段按顺序发送。这不是立即显而易见的——我在这里添加了一个链接列表:github.com/balderdashy/skipper/blob/master/… 如果我有时间使用 PhantomJS/webkit 组合一个测试用例,我也会在那里添加链接。浏览器遵循规范的这一部分,甚至可以追溯到 IE6。
    • 困难的部分是理解为什么它被称为multipart request,而不是更明显的东西,比如file upload request
    • OP 想要一种哲学方法和答案。这个答案没有解释“为什么”部分。它更多的是关于“什么”部分。我不是反对投票的忠实拥护者,但我认为这个答案不是 OP 想要的并且我搜索过。
    • 内容类型“application/x-www-form-urlencoded”对于发送大量包含非 ASCII 字符的二进制数据或文本效率低下。内容类型“multipart/form-data”应用于提交包含文件、非 ASCII 数据和二进制数据的表单。原始来源 - w3.org/TR/html401/interact/forms.html#h-17.13.4.2
    • 更多细节与萤火虫截图在这里:cubicrace.com/2016/05/upload-files-https-using-java.html
    猜你喜欢
    • 1970-01-01
    • 2011-01-19
    • 2020-10-28
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多