【发布时间】:2019-12-31 20:11:22
【问题描述】:
我有一个对象数组,每个对象都包含一些字符串类型的属性和一个文件。
这就是我的数组的样子:
const args = [
{
name: 'presentation',
price: 9.99,
tags: 'invest, finance, business',
file: File,
thumbnail: File
},
{
name: 'presentation2',
price: 20.99,
tags: 'invest, finance, business',
file: File,
thumbnail: File
}
]
const headers = {
headers: {
Authorization: `Bearer ${token}`
}
};
我的目标是将整个对象数组发送到 Express 服务器。在那里我会将信息保存到 Mongo 并将文件上传到 S3。
但是目前,当我在 POST 请求中发送此文件时,我无法在服务器上获取文件流,
当我 console.log 时,甚至整个 req.body 都是一个空对象
axios.post(`${slidesRoute}/createSlides`, args, headers);
或者,我尝试将所有内容都放入 FormData。 例如:
let formData = new FormData();
selectedFiles.forEach((selectedFile, i) => {
formData.append(`name_${i}`, selectedFile.name);
formData.append(`price_${i}`, selectedFile.price);
formData.append(`tags_${i}`, selectedFile.tags);
formData.append(`file_${i}`, selectedFile.file);
formData.append(`thumbnail_${i}`, selectedFile.thumbnail);
});
axios.post(`${slidesRoute}/createSlides`, formData, headers);
然后在后端。我无法使用 multer 捕获这些文件。因为表单数据中的文件名是动态生成的,就像
file_1, file_2 file_3,...
但 multer 希望传递准确的文件名
例如multer().array('file')
所以在我的第二种方法中,我无法使用 Multer 捕获文件
【问题讨论】:
-
能否附上服务器端代码
-
您需要添加您的服务器端处理逻辑,否则问题无法回答!
标签: javascript node.js reactjs rest express