我需要使用axios从一个Node.js服务器上传文件到另一个服务器。我正在使用multer来处理从客户端接收到的数据。以下是我的代码:
我已经尝试从一个简单的HTML页面直接上传文件到Facebook Graph API URL并获得了成功。但我不明白在这里缺少什么。
const multer = require('multer');
const router = require('express').Router();
const FormData = require('form-data');
const fs = require('fs');
router.post('/profile/:idProfile/post', upload.any(), (req, res) => {
const file = req.files[0];
const url = 'https://graph.facebook.com/' + req.params.idProfile + '/photos?access_token=<my-access-token>';
const fd = new FormData();
const config = {
headers: { 'Content-Type': 'multipart/form-data' }
};
fd.append('file', fs.createReadStream(file.path), file.path);
axios.post(url, fd, config)
.then((res2) => {
res.send(res2);
})
.catch((err) => {
res.send({
code: err.response.status,
error: err.response.data.error
});
});
});
我并没有发现任何问题,但是我仍然从Facebook的图形API中收到以下错误信息:
{
"code": 400,
"error": {
"message": "(#324) Requires upload file",
"type": "OAuthException",
"code": 324,
"fbtrace_id": "HeA2joMhLQ7"
}
}
我已经尝试从一个简单的HTML页面直接上传文件到Facebook Graph API URL并获得了成功。但我不明白在这里缺少什么。