Я сталкиваюсь с очень запутанной проблемой при преобразовании изображения в строку base64 в Node.js
Вот мой пример кода:
app.get('/image', (req, res) => {
ServerAPI.queryViewImage(options).then(image => {
res.render('image', { image: Buffer.from(image, 'binary').toString('base64') });
});
});
Так что в принципе, самое важноеэто блок, в котором я конвертирую свой ответ на изображение в строку base64:
{ image: Buffer.from(image, 'binary').toString('base64') }
На самом деле, я протестировал мой API с почтальоном, и изображение было отображено правильно.Затем я преобразовал изображение в base64 с помощью онлайн-конвертера и включил код в мой html / img src, который работал.
Затем я сравнил код base64, сгенерированный Node.js, и онлайн-конвертер из того же вызова API -очевидно, есть различия.Снимок экрана ниже:
различия между ответом Node.js на base64 и изображением на base64
Чего мне не хватает?Почему Node.js неправильно преобразовывает ответ моего изображения?
// РЕДАКТИРОВАТЬ: Включая код функции queryViewImage.
//basically, this function connects to server and returns image response as promise. rp() is from request-promise library
const queryViewImage = (token, siteId, viewId) => {
const options = {
method: 'GET',
url: `${url('sites')}/${siteId}/views/${viewId}/image`,
headers: {
'X-Tableau-Auth': token
}
};
return rp(options)
.then((response) => response)
.catch((err) => err);
}