Как передать потоковое изображение в кодировке base64 на ответ в виде png, используя узел и express - PullRequest
1 голос
/ 28 января 2020

Я использую ax ios для извлечения png base64 от третьей стороны, а затем пытаюсь передать его другому клиенту в виде изображения.

Если я прочитаю полный текст, я смогу res.write(response.data, 'base64'); и клиент получает изображение, которое я ожидаю.

Однако, если я пытаюсь его воспроизвести, клиент просто получает текст base64.

Я пробовал и stream.setEncoding('base64');, и с использованием Base64Encode пакет.

Это мой текущий код:

axios({
    method: 'get',
    timeout: 150000,
    headers,
    url,
    responseType: 'stream'
})
    .then(response => {
        res.writeHead(200, { 'Content-Type': 'image/png' });

        const stream = response.data;
        //stream.setEncoding('base64');
        stream.on('end', () => {
            console.log('ended');
            res.end();
        });
        stream.pipe(new Base64Encode()).pipe(res);
        //stream.pipe(res);
    })
    .catch(reason => {
        logAxiosError(reason);
        res.write('ERROR');
        res.end();
    });
...