【问题标题】:Is it possible to attach file in POST Json?是否可以在 POST Json 中附加文件?
【发布时间】:2017-12-29 02:04:48
【问题描述】:

我有一堆 JSON 格式的数据(序列化对象)。 我通过 POST 方法将此数据发送到服务器,标题为:Content-Type: application/json

是否可以将文件附加到正文请求并立即发送。还是 JSON 数据建议只发送文本数据?

【问题讨论】:

  • 不清楚你在问什么。 “附加文件”是什么意思?您认为发送文本文件和发送文本数据有什么区别?
  • 附加我的意思是在POST请求中发送文件和文本数据。
  • 这并不能澄清你的问题。 Edit 显示您实际发出请求的方式。

标签: json ajax http http-headers


【解决方案1】:

尝试将json对象内的文件作为base64字符串发送:

{
"file":"dGhpcyBpcyBhIGZpbGUgc2FtcGxl..." 
}

稍后您可以使用以下内容打开文件:

document.location = 'data:application/pdf;base64,' + file

【讨论】:

  • 那么如何在服务器端处理file?如果它在base54字符串中?会是 POST 字段吗?
  • 好吧,您可以使用multipart/form-data 将文件发送到服务器。
  • 那么,这是标题multipart/form-data ?也使用 content-type: application/json?
【解决方案2】:

在这种情况下,content-type 标头旨在描述请求正文中的数据类型。 如果您使用application/json,服务器将需要一个 JSON 正文。

如果您的目标是发送带有 JSON 对象和文件的单个请求,您可以将文件编码为 JSON 结构(可能是 base64。请参阅:Binary Data in JSON String. Something better than Base64

{
  ...
  file: "encoded_content",
  ...
}

或者您可以使用内容类型multipart/form-data。 多部分是包含其他部分的部分。 第一个子部分可能是 JSON 结构。第二个可能是文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 2013-01-26
    • 2020-02-11
    • 1970-01-01
    • 2017-03-24
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多