El clic de la etiqueta de anclaje automatiza la descarga. ¿Hay eventos adjuntos a las etiquetas de anclaje que puedo escuchar?
downloadMyFile(){ const link = document.createElement('a'); link.setAttribute('href', 'abc.net/files/test.ino'); link.setAttribute('download', `products.csv`); document.body.appendChild(link); link.click(); link.remove(); }El cliente no podrá notificarle cuando se complete la descarga de esta manera.
Tiene 2 soluciones posibles, que dependen principalmente del tamaño del archivo.
Opción 1: use una llamada ajax en su lugar, puede transmitir todo el archivo en la memoria y luego hacer que el navegador lo descargue en un archivo (que será instantáneo). Esto significa que tiene una vista completa de los diferentes eventos de descarga.
// Get the content somehow // and then make the browser download window.location.href = window.URL.createObjectURL(content);Opción 2: Supervisarlo con el servidor. Te sugiero que agregues un UID a la solicitud como:
link.setAttribute('href', 'abc.net/files/test.ino?uid='+myUID);Haga que el servidor realice un seguimiento de esa solicitud y almacene los detalles con el UID, luego puede hacer que otra ruta informe el estado de la solicitud cuando se le proporcione el UID. El problema con esto es que tendrías que sondear de vez en cuando para saber si la descarga ha terminado.
Dado que no sabemos exactamente el uso de su solicitud, es difícil saber si hay otras posibilidades. Pero en mi humilde opinión, no sirve de nada saber si el archivo se ha descargado por completo. No puedo entender por qué querrías eso al principio. Veo que es un archivo CSV, por lo general no son tan grandes y la descarga debería ser muy rápida... ¿A menos que sea porque tarda mucho en iniciarse ya que tiene que generarse antes? En este caso, le sugiero que vea una pregunta/respuesta popular que hice hace un tiempo. ¿Cómo mostrar una animación de carga mientras se genera el archivo para descargar?