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