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