Después de un trabajo de servidor de larga duración, necesito activar automáticamente una descarga de archivo en el navegador de mi usuario. También tengo conexiones websocket activas que debo mantener en caso de que el usuario esté realizando diferentes tareas en mi aplicación web. Originalmente estaba haciendo esto:
window.location.replace(downloadLink);Sin embargo, después de ejecutar esa línea, extrañaría los mensajes de websocket. Esta pregunta trata con el mismo problema: Al hacer clic en la etiqueta A con Href, el zócalo se desconecta
Entonces probé esto:
window.open(downloadLink, "_blank");Sin embargo, esto muestra una nueva pestaña abierta y la cierra inmediatamente. Es muy discordante si el usuario estaba trabajando en otra cosa. También he probado esto:
axios.get(downloadLink, { responseType: "blob" }).then((response) => { const fileURL = window.URL.createObjectURL(new Blob([response.data])); const docUrl = document.createElement("a"); docUrl.href = fileURL; docUrl.setAttribute("download", fileName); document.body.appendChild(docUrl); docUrl.click(); });Esto funciona pero descarga el archivo en segundo plano. Este archivo es muy grande, por lo que me gustaría que el usuario pudiera ver el progreso de la descarga en la barra de descargas en la parte inferior de la página.
¿Alguien sabe cómo descargar un archivo sin desconectar los sockets web o abrir una nueva pestaña mientras se muestra el progreso de descarga del archivo del navegador?