2017-09-05 1 views
1

Je dois créer une chaîne base64 que je dois envoyer à une API tierce. J'ai le flux et le tampon. Flux de formulaire Je suis capable de créer une image de sorte qu'il n'y a aucun moyen que le flux soit corrompu. Voici les deux variables:NodeJS: Impossible de convertir le flux/tampon en chaîne 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); 

Peu importe ce que j'essaie, je ne peux pas convertir l'un d'eux dans la chaîne base64.

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

Rien de ce qui précède ne fonctionne. Parfois, j'obtiens Uint8Array [arraySize] ou une chaîne Gibberish. Qu'est-ce que je fais mal?

Répondre

1

Exemple d'utilisation des promesses (mais pourraient facilement être adaptées à d'autres approches):

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