Estoy tratando de descargar el archivo, que es generado por el servidor de la siguiente manera:
public downloadZip(): void{ const link = document.createElement('a'); link.setAttribute( 'href', `/srv/genZip?id=${this.id}` ); link.setAttribute('download', '123.zip'); link.click(); }Pero no funciona... ¿Alguien tiene idea de dónde me equivoco?
No puede conducir absolutamente este proceso, solo puede proporcionar sugerencias al navegador.
El navegador tiene un par de lugares diferentes donde puede buscar un nombre de archivo para la descarga:
El encabezado Content-Disposition del servidor, que puede incluir un nombre de archivo, por ejemplo
Content-Disposition: attachment; filename="123.zip"
o
Content-Disposition: attachment; filename*="123.zip"
Por lo que puedo decir, no hay ninguna especificación que indique cuál debería tener preferencia, por lo que para maximizar los navegadores en los que funcionará su código, especificaría el mismo nombre en ambos.
Subrayando eso, hay esta nota en la cobertura de MDN de Content-Disposition anterior:
Nota: Chrome y Firefox 82 y versiones posteriores priorizan el atributo de
downloaddel elemento HTML<a>sobre el parámetroContent-Disposition: inline(para las URL del mismo origen). Las versiones anteriores de Firefox priorizan el encabezado y mostrarán el contenido en línea.
Entonces, si su servidor está devolviendo Content-Disposition: inline y está viendo el recurso cargado en línea (no descargado), es posible que esté usando una copia anterior de Firefox o un navegador que hace lo mismo.