通过axios请求传递图像

时间:2018-05-25 10:30:59

标签: javascript node.js reactjs axios

所以我需要将一个反应组件的图像(和文本)传递给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]
});

所以我传递了文件,但它已被转换为字符串。我花了很多年时间试图解决这个问题无济于事。

感谢您的帮助!

1 个答案:

答案 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' }});
}