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

标签 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 中。

最佳答案

您可以为数组中的每个元素创建一个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);
});

关于node.js - 如何使用 formData.append() 在对象数组中发送文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51138783/

相关文章:

javascript - 如何在nodejs中比较两个字符串源和目标与全名

javascript - Mongoose 使用 .select() 方法

javascript - 如何在featherJS创建的服务上实现自己的代码

javascript - 在 React 中重新渲染子组件或更改子状态

javascript - 无法在 axios 回调中访问更正此问题

javascript - 如何使用 axios create 创建 Promise 实例

javascript - Redux 状态未按预期在 reducer 中构建

node.js - 什么是 Node 持久化

node.js - 关于 express server 和 nodejs http server 的困惑

reactjs - 如何在 React 中使用 Enzyme 或 React 测试库测试 Material-UI 的响应式 UI(例如隐藏、网格、断点)