Base64 кодирование Node.js
Мне нужно получить файл по URL-адресу (любой тип файла) и закодировать его с помощью base64, а затем отправить его в API, который принимает только файлы с кодировкой base64. Вот описание документации только для пояснения:
Файл должен быть в кодировке base64. Не следует использовать кодировку в стиле MIME с символами новой строки при максимальной длине строки 76. Вместо этого вы должны опустить эти новые строки. (Если вы не пропустите символы новой строки, сохраненный файл не будет использоваться.)
Ниже приведен текущий код, который я использую. Я могу загрузить файл в соответствующий API, но файл по какой-то причине поврежден. Текущий URL-адрес, который я использую для этого (просто фиктивное изображение для тестирования):
Я получаю файл для загрузки в соответствующий API - но при открытии он поврежден. Я предполагаю, что это как-то связано с ограничениями base64, указанными выше для API. Мой код для кодировки base64.
ОБНОВЛЕНО - возникла асинхронная проблема, и все та же проблема:
const request = require('request');
function sendBase64EncodedFile( url ) {
request.get( url , function (error, response, body) {
if (!error && response.statusCode == 200) {
var data = new Buffer(body).toString('base64');
/*
Create xml to send to API
*/
var xml = '<qdbapi><usertoken>hidden for privacy issues</usertoken><apptoken>hidden for privacy issues</apptoken><field fid="8">Some testing body text</field><field fid="9" filename="someFileName.png">' + data + '</field></qdbapi>';
var qb_url = "hidden for privacy issues";
request({
url: qb_url,
method: "POST",
'headers': {
'Content-Type': 'application/xml',
'QB-ACTION': 'API_AddRecord'
},
body: xml
}, function (error2, response2, body2){
});
} else {
//console.log( body );
}
});
}