L'approccio ingenuo per creare un ReadableStream da un Uint8Array è usare il costruttore ReadableStream e accodare l'intero array come un singolo chunk. Per chunk più grandi, questo potrebbe essere indesiderabile poiché in realtà non fa lo "streaming" dei dati.
ts
const arr = new Uint8Array(64);
const stream = new ReadableStream({
start(controller) {
controller.enqueue(arr);
controller.close();
},
});Per fare lo streaming dei dati in chunk più piccoli, prima crea un'istanza Blob dall'Uint8Array. Poi usa il metodo Blob.stream() per creare un ReadableStream che fa lo streaming dei dati in chunk di una dimensione specificata.
ts
const arr = new Uint8Array(64);
const blob = new Blob([arr]);
const stream = blob.stream();La dimensione del chunk può essere impostata passando un numero al metodo .stream().
ts
const arr = new Uint8Array(64);
const blob = new Blob([arr]);
// imposta la dimensione del chunk di 1024 byte
const stream = blob.stream(1024);Vedi Documentazione > API > Dati Binari per la documentazione completa sulla manipolazione dei dati binari con Bun.