多部分/表单数据与应用程序/八位字节流

问题描述 投票:0回答:2

我正在创建一个简单的

REST API
用于上传文件。从其他 API 中我发现它们使用“
multipart/form-data
”内容类型。但对我来说,“
application/octet-stream
”看起来更简单。

如果我不打算随文件发送更多表单数据,是否有任何理由使用“

multipart/form-data
”而不是“
application/octet-stream
”?

http post http-upload
2个回答
39
投票

虽然您现在不打算将任何其他数据与文件一起发送,但如果需要,

multipart/form-data
您可以稍后添加其他数据(不会破坏兼容性)。

此外,

multipart/form-data
还可以通过提交 HTML 表单直接访问 REST API(请参阅 https://stackoverflow.com/a/4526286/693140)。

但是,您的 API 可以通过使用客户端的内容类型标头来区分这两种类型。


0
投票

我会选择

"application/form-data"
,有3个主要原因:

  1. 它可以携带一组不同的数据类型,包括
    "application/octet-stream"
  2. 将来要求可能会发生变化,您可能需要发布与文件相关的更多信息。
  3. 即使情况 2) 不会发生,您仍然必须考虑文件很大的情况:您需要对它们进行分块以实现有效的文件流。在流传输过程中,有时,您需要通知服务器是否发送了最后一个文件块(以布尔标志的形式,例如:
    'isLastChunk', chunksArray.length === 1
    )。因此,这意味着您将发布不止一种数据类型。
© www.soinside.com 2019 - 2024. All rights reserved.