“multipart/related”和“multipart/form-data”有什么区别?在什么情况下应该使用它们?

16
我能够找到很多关于multipart/form-data的信息,但对于multipart/related的了解却不多。就协议/请求格式而言,有人能解释一下这两个HTTP规范在文件上传方面的区别吗?请注意,不要改变原意。
1个回答

19

multipart/form-data 用于上传MIME兼容的表示形式的文件,例如图片和视频文件以及相关元数据,全部放在一个POST请求中。这就是当您在在线表单中填写附带图片并按下“提交”按钮时发生的情况。

multipart/related 用于复合文档,并且您需要组合分离的正文部分以提供消息的完整含义。一个使用案例是一起提交一些Base64编码图像和相关元数据。

一个POST请求示例是 (https://cloud.google.com/storage/docs/json_api/v1/how-tos/multipart-upload):

POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=multipart HTTP/1.1
Authorization: Bearer [YOUR_AUTH_TOKEN]
Content-Type: multipart/related; boundary=foo_bar_baz
Content-Length: [NUMBER_OF_BYTES_IN_ENTIRE_REQUEST_BODY]

--foo_bar_baz
Content-Type: application/json; charset=UTF-8

{
  "name": "myObject"
}

--foo_bar_baz
Content-Type: image/jpeg

[JPEG_DATA]
--foo_bar_baz--

您可以在https://msdn.microsoft.com/en-us/library/ms527355(v=exchg.10).aspx找到更多详细信息。


multipart/related需要一个type参数来标识文档的主要部分。它通常用于HTML电子邮件或离线存档,其中包含相关部分,如图像等。 - OrangeDog
@OrangeDog:你能指出一些具体要求吗?另外,你所说的“类型”是指每个部分的“内容类型”是否变为强制要求? - sandwood
@sandwood https://www.rfc-editor.org/rfc/rfc2387 - OrangeDog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接