Estou gerando uma imagem no lado do cliente e a exibo com HTML assim:
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgM...."/>
Quero oferecer a possibilidade de baixar a imagem gerada.
Como posso perceber que o navegador está abrindo uma caixa de diálogo para salvar o arquivo (ou apenas baixar a imagem como o chrome ou firefox para a pasta de download faria) que permite ao usuário salvar a imagem sem clicar com o botão direito e salvar como na imagem?
Eu preferiria uma solução sem interação com o servidor. Portanto, estou ciente de que seria possível se eu primeiro carregasse a imagem e depois iniciasse o download.
Muito obrigado!
fonte
você pode usar o atributo de download em uma tag ...
<a href="data:image/jpeg;base64,/9j/4AAQSkZ..." download="filename.jpg"></a>
veja mais: https://developer.mozilla.org/en/HTML/element/a#attr-download
fonte
download
atributo ainda não era compatível com Safari e IE.Eu acho que um img tag é necessária como uma criança de um a tag, da seguinte forma:
<a download="YourFileName.jpeg" href="data:image/jpeg;base64,iVBO...CYII="> <img src="data:image/jpeg;base64,iVBO...CYII="></img> </a>
ou
<a download="YourFileName.jpeg" href="/path/to/OtherFile.jpg"> <img src="/path/to/OtherFile.jpg"></img> </a>
Apenas usando a um tag como explicado no # 15 não funcionou para mim com a mais recente versão do Firefox e Chrome, mas colocando os mesmos dados de imagem em ambos os a.href e img.src etiquetas funcionou para mim.
A partir de JavaScript, ele pode ser gerado assim:
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);
fonte
Dê uma olhada em FileSaver.js . Ele fornece uma
saveAs
função útil que cuida da maioria das peculiaridades específicas do navegador.fonte