Lo que realmente quiero es hacer algo como Mega web, donde cuando descarga un archivo, primero lo descarga dentro de su navegador, luego su navegador solicita que descargue el archivo y el archivo se descargará instantáneamente.
Hasta ahora esto es lo que he encontrado como solución:
fetch(url).then(response => response.text()) .then(uri => { var link = document.createElement("a"); link.download = name; link.href = uri; link.click(); })Si bien funciona para imágenes pequeñas, probé este enfoque en un archivo de 80 MB y la pestaña se bloqueó.
No he probado esto todavía, pero aparentemente esto está funcionando:
fetch(url) .then((response) => response.blob()) .then((blob) => { var URL = window.URL || window.webkitURL; var fileURL = URL.createObjectURL(blob); var link = document.createElement("a"); link.download = name; link.href = fileURL; link.click(); URL.revokeObjectURL(fileURL); });