Estoy generando una imagen en el lado del cliente y la muestro con HTML como este:
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgM...."/>
Quiero ofrecer la posibilidad de descargar la Imagen generada.
¿Cómo puedo darme cuenta de que el navegador está abriendo un diálogo de guardado de archivos (o simplemente descargar la imagen como Chrome o Firefox en la carpeta de descarga sería suficiente) que permite al usuario guardar la imagen sin hacer clic derecho y guardar como en la imagen?
Preferiría una solución sin interacción con el servidor. Entonces soy consciente de que sería posible si primero subo la imagen y luego inicio la descarga.
¡Muchas gracias!
fuente
puede utilizar el atributo de descarga en una etiqueta a ...
<a href="data:image/jpeg;base64,/9j/4AAQSkZ..." download="filename.jpg"></a>
ver más: https://developer.mozilla.org/en/HTML/element/a#attr-download
fuente
download
atributo todavía no es compatible con Safari e IE.Supongo que se necesita una etiqueta img como hijo de una etiqueta a, de la siguiente manera:
<a download="YourFileName.jpeg" href="data:image/jpeg;base64,iVBO...CYII="> <img src="data:image/jpeg;base64,iVBO...CYII="></img> </a>
o
<a download="YourFileName.jpeg" href="/path/to/OtherFile.jpg"> <img src="/path/to/OtherFile.jpg"></img> </a>
Sólo mediante el una etiqueta como se explica en el # 15 no funcionó para mí con la última versión de Firefox y Chrome, pero poniendo los mismos datos de imagen tanto en a.href y img.src etiquetas trabajado para mí.
Desde JavaScript se podría generar así:
var data = canvas.toDataURL("image/jpeg"); var img = document.createElement('img'); img.src = data; var a = document.createElement('a'); a.setAttribute("download", "YourFileName.jpeg"); a.setAttribute("href", data); a.appendChild(img); var w = open(); w.document.title = 'Export Image'; w.document.body.innerHTML = 'Left-click on the image to save it.'; w.document.body.appendChild(a);
fuente
Eche un vistazo a FileSaver.js . Proporciona una
saveAs
función útil que se encarga de la mayoría de las peculiaridades específicas del navegador.fuente