Situación:
Solución actual:
No puedo reemplazar el botón con el simple <a href="url" download> porque la URL se genera en respuesta a la solicitud del usuario y no se conoce de antemano.
Quiero que sea una experiencia de un solo clic (es decir, no quiero que el usuario haga clic en un nuevo botón con la URL recibida).
Pregunta:
window.location para ese propósito?No suena bien cambiar la ubicación de la window.location para el archivo de descarga.
Si usa una etiqueta <a> , puede agregar el atributo de download
<a href="my.pdf" download="your.pdf" >download file</a>Si prefiere usar código, puede usar un script como este:
var aTag = document.createElement('a'); aTag.setAttribute('download','your.pdf'); aTag.setAttribute('href','my.pdf'); aTag.click();La forma correcta es hacer que el backend envíe el encabezado Content-Type adecuado con el tipo de archivo MIME correcto en la solicitud de descarga del enlace.
Está bien cambiar window.location o document.location.href para redirigir la página al enlace de descarga.
Este es en realidad un problema muy simple que no necesita Javascript en absoluto.
Cuando la solicitud se envía al servidor simplemente haciendo clic en un enlace para realizar la solicitud, el servidor, después de validar la solicitud, genera una URL firmada y luego responde...
HTTP/1.1 302 Found Location: https://example-bucket.s3.amazonaws.com/... # new signed URLEl navegador sigue la redirección y obtiene el recurso.