2017-09-05 112 views
1

我需要創建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字符串。我究竟做錯了什麼?

回答

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); 
    }); 
}); 
相關問題