【发布时间】:2020-12-22 02:54:57
【问题描述】:
我需要使用 axios 将文件从 Node.js 服务器上传到另一台服务器。我正在使用 multer 来处理从客户端接收到的数据。这是我的代码:
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 的 Graph API 收到以下错误:
{
"code": 400,
"error": {
"message": "(#324) Requires upload file",
"type": "OAuthException",
"code": 324,
"fbtrace_id": "HeA2joMhLQ7"
}
}
我已经尝试将文件从一个简单的 html 页面直接上传到 Facebook Graph Api url 并成功。但我无法理解这里缺少什么
【问题讨论】:
-
这个问题有点误导...您实际上只是想将照片上传到 facebook,它不存在于网络服务器上,但带有表单输入。这可以帮助你:devils-heaven.com/…
-
顺便说一句,这是用于 Facebook 上的用户个人资料或页面吗?
-
@luschn 页面。这和我之前的问题stackoverflow.com/questions/51466732/…有关
-
那么与另一个问题有什么区别呢?您只是使用 axios 而不是其他一些 sdk,但它是完全相同的东西,具有完全相同的错误。你试过我文章中的代码了吗?我也确实在另一个线程中发布了它。
-
@luschn 是的,我尝试了代码。但是,我终于在这里找到了解决方案github.com/axios/axios/issues/318
标签: node.js facebook-graph-api file-upload axios multer