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

时间:2017-09-05 12:03:02

标签: node.js stream

我需要创建我需要发送到第三方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); 

无论我尝试什么,我都无法在base64字符串中转换其中任何一个。

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

以上都不奏效。有时我得到Uint8Array [arraySize]或Gibberish字符串。我做错了什么?

1 个答案:

答案 0 :(得分:2)

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

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);
    });
});