将缓冲区转换为 Node 中的可读流.js

2022-08-30 04:27:48

我有一个库,它接受一个作为输入,但我的输入只是一个base64格式的图像。我可以像这样转换我拥有的数据:ReadableStreamBuffer

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

但我不知道如何将其转换为a或将I获得的转换为.ReadableStreamBufferReadableStream

有没有办法做到这一点?


答案 1

对于 nodejs 10.17.0 及更高版本:

const { Readable } = require('stream');

const stream = Readable.from(myBuffer);

答案 2

像这样的东西...

import { Readable } from 'stream'

const buffer = new Buffer(img_string, 'base64')
const readable = new Readable()
readable._read = () => {} // _read is required but you can noop it
readable.push(buffer)
readable.push(null)

readable.pipe(consumer) // consume the stream

在一般课程中,可读流的函数应该从底层源收集数据,并逐步确保在需要之前不会将巨大的源收集到内存中。_readpush

在这种情况下,尽管您已经在内存中拥有源,因此不是必需的。_read

推送整个缓冲区只是将其包装在可读流 API 中。