Actualmente estoy tratando de descargar un archivo PNG desde mi aplicación Sapui5. He intentado varias formas, pero todas solo mostraban la imagen en una pestaña nueva o en la misma. La descarga nunca se activó.
Ya he probado de estas formas:
1) URLHelper.redirect 2) window.open, 3) window.location.assign, 4) fetch(URL).then(res => res.blob()).then(blob => { var file = window.URL.createObjectURL(blob); window.location.assign(file); 5) var link = document.createElement("a"); link.href = FullURL; link.download = "QRCode.png"; link.target = "_self"; document.body.appendChild(link); link.click(); document.body.removeChild(link) 6) sap.ui.core.util.File.save<---- esto solo da como resultado un archivo que devuelve un mensaje de que el formato de archivo probablemente no sea compatible.
¿Cómo puedo activar la descarga?
Soy bastante nuevo en esto y espero que me puedan ayudar. Gracias
La solución #5 solo funciona si la imagen y la URL tienen el mismo origen (el protocolo, el subdominio, el dominio y el puerto deben ser los mismos).
Las excepciones son las direcciones URL data y blob . Entonces puedes combinar la solución #5 con la #4.
He creado un pequeño ejemplo de trabajo .
El código relevante está aquí:
const sURL = 'https://i.imgur.com/q6E7b9d.png'; fetch(sURL) .then((oResponse) => oResponse.blob()) .then((oBlob) => { const sBlobURL = URL.createObjectURL(oBlob); const oLink = document.createElement('a'); oLink.href = sBlobURL; oLink.download = sURL.split('/').pop(); oLink.target = '_blank'; document.body.appendChild(oLink); oLink.click(); document.body.removeChild(oLink); });Si esto tampoco funciona, probablemente tenga un problema de CORS. Básicamente, el anfitrión de su imagen decide si las imágenes se pueden incrustar y descargar en otras páginas.