FormData 附加 JSON

Web*_*ter 5 json multipartform-data form-data

如何使用 FormData 创建以下结果

------WebKitFormBoundaryOmz20xyMCkE27rN7
Content-Disposition: form-data; name="data";
Content-Type: application/json

{
  "description": "description"
}
------WebKitFormBoundaryOmz20xyMCkE27rN7
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg


FILE_DATA
------WebKitFormBoundaryOmz20xyMCkE27rN7
Run Code Online (Sandbox Code Playgroud)

我在用

------WebKitFormBoundaryOmz20xyMCkE27rN7
Content-Disposition: form-data; name="data";
Content-Type: application/json

{
  "description": "description"
}
------WebKitFormBoundaryOmz20xyMCkE27rN7
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg


FILE_DATA
------WebKitFormBoundaryOmz20xyMCkE27rN7
Run Code Online (Sandbox Code Playgroud)

它产生

------WebKitFormBoundaryOmz20xyMCkE27rN7
Content-Disposition: form-data; name="data"; filename="blob"
Content-Type: application/json

{
  "description": "description"
}
------WebKitFormBoundaryOmz20xyMCkE27rN7
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg


FILE_DATA
------WebKitFormBoundaryOmz20xyMCkE27rN7
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我们有一个filename="blob"JSON 部分,我想删除它

我想data在我的多部分数据中有一个字段而不是data文件

Kai*_*ido 5

当你做

new Blob([JSON.stringify({
    description: 'description',
  })], {
  type: 'application/json'
})
Run Code Online (Sandbox Code Playgroud)

您真正生成的一个文件,一个 UTF-8 文本文件,其内容将以{description:'description}UTF-8 编码。

因此,当您将其附加到 FormData 时,它会作为文件传递,其中一个特殊之处是您确实将其 Content-Type 设置为application/json.

如果您希望将此数据作为表单数据数据的一部分以纯文本形式发送,您的服务器将能够直接从后数据中解析,那么只需将您的字符串附加为您的 FormData 的键:

new Blob([JSON.stringify({
    description: 'description',
  })], {
  type: 'application/json'
})
Run Code Online (Sandbox Code Playgroud)