Actualmente estoy descargando archivos grandes a mi código de cliente usando axios lib. Los archivos pesan alrededor de 600 MB. Pero durante el proceso de descarga, la página falla, como si se quedara sin memoria o similar.
Necesito mantener el archivo en la memoria porque el contenido está encriptado y necesito descifrarlo antes de pasárselo al usuario.
Uso la solicitud REST GET Http de esta manera:
axios.get(url, { headers: { "Authorization": authHeader().Authorization, "Accept" : "application/octet-stream, application/json, text/plain, */*" }, responseType: 'arraybuffer' }) .then(function(response) { console.log(response);¿Hay alguna solución común para solucionar el problema? Hasta ahora no pude encontrar ninguno.
Abra la url en la nueva pestaña en el lado del cliente usando window.open(url)
Deje que el navegador maneje el documento automáticamente. Si desea descifrar los datos, intente descifrar en el lado del servidor, ya que proporcionará la clave de descifrado en el lado del cliente, lo que puede tener problemas de seguridad.
¿Realmente necesitas hacerlo con axios? Existe la API Fetch , que puede servir para este propósito. Así es como lo hago para archivos en el mismo rango de tamaño que el suyo (archivos multimedia y ZIP de hasta 1 GB):
fetch(url, { mode: 'no-cors', // to allow any accessible resource method: 'GET', }) .then((response) => { console.debug('LOAD_FROM_URL::response', response); //NOTE: response URL is possibly redirectedConsulte https://github.com/suterma/replayer-pwa/blob/main/src/store/actions.ts para obtener más contexto.
Está funcionando impecable hasta ahora para mí.
¿Puede intentar configurar maxContentLength y maxBodyLength en Infinity en la llamada axios?
axios.get(url, { headers: { "Authorization": authHeader().Authorization, "Accept" : "application/octet-stream, application/json, text/plain, */*" }, responseType: 'arraybuffer', maxContentLength: Infinity, maxBodyLength: Infinity }) .then(function(response) { console.log(response); }También puede echar un vistazo a este foro de problemas de axios para lo mismo.