Итак, у меня есть веб-сайт, на котором пользователь загружает файл изображения (я тестировал файл PNG размером 113 КБ). После нажатия кнопки отправки данные изображения кодируются в base64, а затем отправляются на сервер node.js, размещенный на heroku в JSON в теле запроса POST. Затем сервер берет данные изображения и анализирует JSON. Затем я делаю POST с сервера heroku на конечную точку media/upload
, используя модуль узла, 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
. Любые идеи о том, как я могу сделать это без его использования?