2017-09-05 11 views
1

サードパーティAPIに送信する必要があるbase64文字列を作成する必要があります。私はストリームとバッファを持っています。フォームストリーム私は画像を作成することができますので、ストリームが破損することはありません。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文字列でそれらのいずれかを変換することはできません何でも私がしよう、:ここでは、2つの変数があります。

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

上記のいずれの動作もありません。場合によっては、Uint8Array [arraySize]またはGibberish文字列を取得します。私は間違って何をしていますか?

答えて

1

約束(しかし、簡単に他の手法に適合させることができる)を用いて実施例:

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