javascript - data - "Aw, Snap" cuando el uri de datos es demasiado grande
image url to base64 (1)
Es un error conocido de cromo . La solución recomendada es usar una URL blob . También vea Crear una Blob desde una cadena base64 en JavaScript .
Estoy escribiendo una extensión de Chrome que hace lo siguiente:
- Descarga un archivo de un sitio web a la memoria utilizando
XMLHttpRequest
- Agrega datos adicionales al archivo y luego base64 codifica el resultado a la variable
total_encoded_data
- Ofrece los datos al usuario utilizando
<a href=data:application/octet-stream;charset=utf-8;base64,'' + total_encoded_data+'' download=''file.bin''>Click to Download</a>
. Dondetotal_encoded_data
se agrega a href usando jQuery.
He encontrado, a través de una búsqueda binaria manual, que si el tamaño de total_encoded_data
es mayor que 2097100 caracteres, entonces recibiré un mensaje Aw, Snap cuando haga clic en el enlace. Si el tamaño es más pequeño, entonces puedo descargarlo como esperaba.
Además de probar el tamaño del archivo, también utilicé atoi
para garantizar que la codificación de base64 sea válida y funciona sin errores.
Los mensajes Aw, Snap no producen ningún informe de bloqueo en chrome://crashes
ni ningún resultado inesperado en chrome_debug.log
¿Cómo evito un mensaje Aw, Snap al servir un uri de datos donde la longitud de cadena codificada en base64 es mayor que 2097100?