所以我有一个网站,用户可以在其中上传图像文件(我一直在使用 113KB PNG 文件进行测试)。点击提交按钮后,图像数据被编码为 base64,然后以 POST 请求正文中的 JSON 格式发送到 Heroku 上托管的 node.js 服务器。然后服务器获取图像数据并解析 JSON。media/upload然后,我使用节点模块从 heroku 服务器向端点发送 POST twitter,. 我试过用它来发布一个正常的状态,所以这不是身份验证问题。在twitter模块文档的示例中,他们这样做(原始二进制文件,而不是 base64):
var data = require('fs').readFileSync('image.jpg');
client.post('media/upload', {media: data}, function(error, media, response) { ... }
但是,按照我的做法,我实际上无法读取文件——我得到的只是来自 JSON 字符串的编码数据。无论如何,这就是我所拥有的:
...
let data = JSON.parse(req.rawBody).imageb64;
//console.log(data);
client.post('media/upload', {media_data: data}, function(error, media, response) {
if (!error) {
console.log(media);
var status = {
status: 'api test',
media_ids: media.media_id_string
}
client.post('statuses/update', status, function(error, tweet, response) {
if (!error) {
console.log(tweet);
}
});
} else {
console.log(response)
}
});
我怀疑问题是因为我传递的是数据而不是readFileSync. 关于如何在不使用它的情况下做到这一点的任何想法?