首页 > 解决方案 > React 将对象数组附加到 formdata

问题描述

我在将对象数组(对象包含文件)附加到表单数据时遇到问题。这是我需要发送到后端的表单数据。

{
  education: {
    name: "naziv edukacije ovde celavi",
    company: 1,
    app: 1,
    category: 1
  },
  slides: [
    {
       serial_num: 1,
       text: "test slajda",
       image: File
    },
    {
       serial_num: 2,
       text: "text slajda 2",
       image: File
    }
  ]
}

当我这样做时,它适用于教育对象

formData.append("education", education)

但是幻灯片在附加到 formData 之前不会通过 幻灯片数组的 console.log

我试过了

formData.append("slides", slides)

这给了我[对象对象],[对象对象]

如果我尝试

formData.append("slides", JSON.stringify(slides))

对象的图像键丢失了大部分文件数据,使其不足以用于后端

标签: reactjsmultipartform-dataform-data

解决方案


看起来你将不得不循环遍历你的数组,因为你将它附加到你的 formData,我从几个地方看到,here & here

但是对于您的示例,您可能可以执行以下操作:

const slides = [{serial_num: 1, text: "test slajda", image: File}, {serial_num: 2, text: "text slajda 2", image: File}]
const formData = new FormData();
slides.forEach(item => {
  formData.append(`slides`, JSON.stringify(item));
});
console.log(formData.getAll('slides'));

推荐阅读