Node.JS - Кодирование изображений в base64 с использованием буфера - PullRequest
21 голосов
/ 15 августа 2011

Я пытаюсь кодировать изображение, используя base64 в Node.JS, чтобы передать его API-интерфейсу PostageApp в качестве вложения. Я думал, что у меня это работает, но он прикрепляет файл 1K, который не совсем то, что я искал.

Вот мой код:

 var base64data;

 fs.readFile(attachment, function(err, data) {
   base64data = new Buffer(data).toString('base64');
 });

И вот часть вызова API, который я делаю:

 attachments: {
   "attachment.txt" : {
     content_type: "application/octet-stream",
     content: base64data
   },
 }

Я немного растерялся, не так уж и хорош с Node, но я думал, что это сработает. Любая помощь будет оценена!

Ответы [ 2 ]

36 голосов
/ 15 августа 2011
fs.readFile(attachment, function(err, data) {
   var base64data = new Buffer(data).toString('base64');
   [your API call here]
});

Требуется некоторое время, чтобы получить результаты, поэтому к тому времени, как вы получите данные, выполнение внешних областей уже завершено.

11 голосов
/ 27 апреля 2015

Просто укажите "base64" в качестве кодировки. По документам :

Если кодировка не указана, возвращается необработанный буфер.

fs.readFile(attachment, {encoding: 'base64'}, function(err, base64data) {
   [your API call here]
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...