Conversion d'un tampon en un ReadableStream dans nodejs

Je suis assez nouveau pour Buffers et ReadableStreams, alors peut-être que c'est une question stupide. 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:

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

Mais je ne sais pas comment le convertir en ReadableStream ou convertir le Buffer que j'ai obtenu à ReadableStream.

Existe-t-il un moyen de le faire ou est-ce que je tente d'atteindre l'impossible?

Merci.

Vous pouvez créer un ReadableStream à l'aide de Node Stream Buffers :

 // Initialize stream var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({ frequency: 10, // in milliseconds. chunkSize: 2048 // in bytes. }); // With a buffer myReadableStreamBuffer.put(aBuffer); // Or with a string myReadableStreamBuffer.put("A String", "utf8"); 

La fréquence ne peut pas être 0, donc cela entraînera un certain délai.

Node Stream Buffer est évidemment conçu pour être utilisé dans les tests; L'incapacité d'éviter un retard rend un choix médiocre pour l'utilisation de la production.

Gabriel Llamas suggère le streamer dans cette réponse: comment envelopper un tampon en tant que flux2 Flux lisible?

quelque chose comme ça…

 import { Readable } from 'stream' const buffer = new Buffer(img_string, 'base64') const readable = new Readable() readable._read = function () {} // _read is required but you can noop it readable.push(buffer) readable.pipe(consumer) // consume the stream 

Dans le cours général, la fonction _read du flux lisible devrait collecter des données à partir de la source sous-jacente et la push progressivement en vous assurant de ne pas récolter une source énorme dans la mémoire avant qu'il soit nécessaire.

Dans ce cas, vous avez déjà la source dans la mémoire, donc _read n'est pas nécessaire.

En appuyant sur l'intégralité du tampon, il suffit de l'envelopper dans le flux lisible api.