FormData附加JSON

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

如何使用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

我在用

const formData = new FormData();
const data = new Blob([JSON.stringify({
        description: 'description',
      })], {
        type: 'application/json'
      });
formData.set('data', data);
formData.set('file', file);

它生成

------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

如你所见,我们在JSON部分有一个filename="blob",我想删除它

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

json multipartform-data form-data
1个回答
1
投票

当你这样做

new Blob([JSON.stringify({
    description: 'description',
  })], {
  type: 'application/json'
})

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

因此,当您将其附加到FormData时,它将作为文件传递,您将其Content-Type设置为application/json

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

const data = JSON.stringify({
  description: 'description',
})
const fd = new FormData();
// append directly as part of the postData in plain text
fd.append('data', data);

console.log(...fd); // [key, value]
© www.soinside.com 2019 - 2024. All rights reserved.