127 votes

Conversion d'un tampon en ReadableStream en Node.js

J'ai une bibliothèque qui prend comme entrée un ReadableStream mais mon entrée est juste une image au format base64. Je pourrais convertir les données que j'ai dans un Buffer comme ça :

var img = new Buffer(img_string, 'base64');

Mais je n'ai aucune idée de la manière de le convertir en un ReadableStream ou convertir le Buffer J'ai obtenu à un ReadableStream .

Y a-t-il un moyen de le faire ?

8voto

Ihor Sakaylyuk Points 1349

Vous pouvez utiliser l'API de flux standard de NodeJS pour cela - stream.Readable.from

const { Readable } = require('stream');
const stream = Readable.from(buffer);

Note : Ne pas convertir un tampon en chaîne ( buffer.toString() ) si le tampon contient des données binaires. Cela conduira à des fichiers binaires corrompus.

6voto

Shwetabh Shekhar Points 227

Voici une solution simple utilisant streamifier module.

const streamifier = require('streamifier');
streamifier.createReadStream(new Buffer ([97, 98, 99])).pipe(process.stdout);

Vous pouvez utiliser des chaînes de caractères, des tampons et des objets comme arguments.

6voto

Richard Vergis Points 164

Voici mon code simple pour cela.

import { Readable } from 'stream';

const newStream = new Readable({
                    read() {
                      this.push(someBuffer);
                    },
                  })

2voto

mraxus Points 491

Essayez ça :

const Duplex = require('stream').Duplex;  // core NodeJS API
function bufferToStream(buffer) {  
  let stream = new Duplex();
  stream.push(buffer);
  stream.push(null);
  return stream;
}

Source : Brian Mancini -> http://derpturkey.com/buffer-to-stream-in-node/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X