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

use*_*256 4 stream node.js

我需要创建需要发送到第三方 API 的 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); 
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,我都无法将它们中的任何一个转换为 base64 字符串。

_updatedFileStream.toString('base64');
Buffer(newJpeg, 'base64');
Buffer(newData, 'base64');
Run Code Online (Sandbox Code Playgroud)

以上都不起作用。有时我会得到 Uint8Array[arraySize] 或乱码字符串。我究竟做错了什么?

gre*_*uze 6

使用承诺的示例(但可以很容易地适应其他方法):

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);
    });
});
Run Code Online (Sandbox Code Playgroud)