如何使用formData.append()在对象数组中发送文件

时间:2018-07-02 14:47:07

标签: node.js reactjs

我有一个对象数组,格式为:

array1: [ { name: 'A', image: File {name: "Desert.jpg", path: "C:\Users\Public\Pictures\Sample Pictures\Desert.jpg", lastModified: 1247549551658, lastModifiedDate: Tue Jul 14 2009 11:02:31 },
          { name: 'B', image: File{name: "Desert.jpg", path: "C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg", lastModified: 1247549551658, lastModifiedDate: Tue Jul 14 2009 11:02:31} }, ..... ]

我正在使用以下命令将array1发送到我的后端服务器:

formData.append('array1', JSON.stringify(array1))

在后端,我收到的数组为:

let array1 = JSON.parse(req.body.array1)

但是在后端,文件为空。我怎样才能解决这个问题?? 前端在React中,后端在Node中。

2 个答案:

答案 0 :(得分:0)

您尝试过吗?

array1.forEach(file => {
  formData.append("images[]", file.image, file.image.name)
})

也取决于您的后端。它是如何接收请求的...

答案 1 :(得分:0)

您可以为数组中的每个元素创建一个fetch,并将所有数据放入一个FormData

const promises = array1.map(obj => {
  const formData = new FormData();

  Object.keys(obj).forEach(key => {
    formData.append(key, obj[key]);
  });

  return fetch('/your-file-upload-endpoint', {
    method: 'POST',
    body: formData
  });
}

Promise.all(promises).then(() => {
  console.log('All files were uploaded');
}).catch(error => {
  console.error(error);
});