Наивный подход к созданию ReadableStream из Buffer — использовать конструктор ReadableStream и поставить в очередь весь массив как один чанк. Для большого буфера это может быть нежелательно, так как этот подход не «потоковый» — данные не передаются меньшими частями.
ts
const buf = Buffer.from("hello world");
const stream = new ReadableStream({
start(controller) {
controller.enqueue(buf);
controller.close();
},
});Для потоковой передачи данных меньшими частями сначала создайте экземпляр Blob из Buffer. Затем используйте метод Blob.stream() для создания ReadableStream, который потоково передаёт данные частями указанного размера.
ts
const buf = Buffer.from("hello world");
const blob = new Blob([buf]);
const stream = blob.stream();Размер чанка можно установить, передав число в метод .stream().
ts
const buf = Buffer.from("hello world");
const blob = new Blob([buf]);
// установить размер чанка 1024 байта
const stream = blob.stream(1024);Смотрите Документация > API > Двоичные данные для полной документации по работе с двоичными данными в Bun.