Estoy usando FileReader para convertir un Blob (creado a partir de un archivo que tiene más de 2 GB) en una cadena base64. Pero lamentablemente estoy terminando con el siguiente error:
DOMException: The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquiredFunciona bien si el archivo tiene menos de 2 GB.
Convertidor:
private convertBlobToBase64 = (blob: Blob, filename: string) => new Promise<FileForSaveInDevice>((resolve, reject) => { console.log('Blob', blob); const reader = new FileReader(); reader.onerror = reject; reader.onload = () => { resolve({ base64: reader.result as string, filename }); }; reader.readAsDataURL(blob); });Encontré una pregunta similar, que no obtuvo respuesta: FileReader: DOMException, no se puede convertir blob en arrayBuffer una y otra vez
¿Por qué tienes que hacer eso? Te sugiero que dividas el archivo en trozos
blobInChunks(blob:Blob) { let chunkSize = 1024 * 1024 * 64; //64Mb let chunks = Math.ceil(blob.size/chunkSize) ; let chunk = 0 ; let _chunksArray:Blob[] = [] ; while (chunk++ <= chunks) { let offset = chunk*chunkSize ; _chunksArray.push(blob.slice(offset, offset + chunkSize)) ; } return _chunksArray ; }