所以我需要将一个反应组件的图像(和文本)传递给api。
我的反应api中有这段代码:
export const addProject = (name, imgs) => {
var imgsArray = [];
Object.keys(imgs).map(x => imgsArray.push(imgs[x]));
console.log(imgsArray); //Will print(with 3 files passed): (3) [File(179582), File(32123), File(122404)]
var formData = new FormData();
formData.append("name", name);
formData.append("images", imgsArray);
return axios.post('/api/addProject',formData,{ headers: {'Content-Type': 'multipart/form-data' }});
}
到目前为止,我们有一个图像对象,并通过post请求将它传递给formData对象到节点js api。
这会调用下面的函数(删除大部分代码,因为它与我的问题无关:
router.post('/addProject', upload.array('file'), (req, res) => {
console.log(typeof req.body.images); //Will print out string
console.log(req.body.images); //Will print(with 3 files passed): [object File],[object File],[object File]
});
所以我传递了文件,但它已被转换为字符串。我花了很多年时间试图解决这个问题无济于事。
感谢您的帮助!
答案 0 :(得分:0)
无论何时谈论数组,都需要使用[]
,以下代码可以帮助您
export const addProject = (name, imgs) => {
var formData = new FormData();
formData.append("name", name);
Object.keys(imgs).forEach(x => formData.append("images[]", x));
return axios.post('/api/addProject', formData, { headers: {'Content-Type': 'multipart/form-data' }});
}