Si tengo un archivo grande (por ejemplo, cientos de MB), ¿FileReader.readAsArrayBuffer() lee todos los datos del archivo en un ArrayBuffer?
Según [aquí[(https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsArrayBuffer) esto es lo que sucede.
Tengo un gran archivo .zip con varios GB.
Me preocupa tomar toda la RAM cuando trabajo, por ejemplo, en un dispositivo móvil.
¿Existe un enfoque alternativo en el que se devuelva un identificador de archivo y se lea una parte del archivo según sea necesario?
Puedes usar Blob.stream() para esto:
const bigBlob = new Blob(["somedata".repeat(10e5)]); console.log("Will read a %sbytes Blob", bigBlob.size) const reader = bigBlob.stream().getReader(); let chunks = 0; reader.read().then(function processChunk({ done, value }) { if (done) { console.log("Stream complete. Read in %s chunks", chunks); return; } // do whatever with the chunk // 'value' is an ArrayBuffer here chunks++; return reader.read().then(processChunk); }).catch(console.error);