NodeJS:无法将流/缓冲区转换为base64字符串

问题描述:

我需要创建base64字符串,我需要发送到第三方API。我有流和缓冲区。表单流我能够创建一个图像,所以没有办法破坏流。这里有两个变量:NodeJS:无法将流/缓冲区转换为base64字符串

var newJpeg = new Buffer(newData, "binary"); 

var fs = require('fs'); 
let Duplex = require('stream').Duplex; 

let _updatedFileStream = new Duplex(); 
_updatedFileStream.push(newJpeg); 
_updatedFileStream.push(null); 

不管什么我尝试,我不能转换其中任何用base64字符串。

_updatedFileStream.toString('base64'); 
Buffer(newJpeg, 'base64'); 
Buffer(newData, 'base64'); 

以上都不是。有时我会得到Uint8Array [arraySize]或者Gibberish字符串。我究竟做错了什么?

实施例使用许诺(但可以容易地适用于其他的方法):

return new Promise((resolve, reject) => { 
    let buffers = []; 
    let myStream = <...>; 
    myStream.on('data', (chunk) => { buffers.push(chunk); }); 
    myStream.once('end',() => { 
     let buffer = Buffer.concat(buffers); 
     resolve(buffer.toString('base64')); 
    }); 
    myStream.once('error', (err) => { 
     reject(err); 
    }); 
});