Я создаю изображение на стороне клиента и показываю его в HTML следующим образом:
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgM...."/>
Я хочу предложить возможность скачать сгенерированное изображение.
Как я могу понять, что браузер открывает диалоговое окно сохранения файла (или просто загружает изображение, например chrome или firefox, в папку загрузки), что позволяет пользователю сохранить изображение без щелчка правой кнопкой мыши и сохранить как на изображении?
Я бы предпочел решение без взаимодействия с сервером. Поэтому я знаю, что это было бы возможно, если я сначала загрузю изображение, а затем начну загрузку.
Большое спасибо!
источник
вы можете использовать атрибут загрузки в теге ...
<a href="data:image/jpeg;base64,/9j/4AAQSkZ..." download="filename.jpg"></a>
подробнее: https://developer.mozilla.org/en/HTML/element/a#attr-download
источник
download
атрибут все еще не поддерживается Safari и IE.Я предполагаю, что тег img необходим как дочерний элемент тега a , следующим образом:
<a download="YourFileName.jpeg" href="data:image/jpeg;base64,iVBO...CYII="> <img src="data:image/jpeg;base64,iVBO...CYII="></img> </a>
или
<a download="YourFileName.jpeg" href="/path/to/OtherFile.jpg"> <img src="/path/to/OtherFile.jpg"></img> </a>
Только использование тега a, как описано в # 15, не сработало для меня с последней версией Firefox и Chrome, но размещение одних и тех же данных изображения в тегах a.href и img.src у меня сработало.
Из JavaScript это можно было бы сгенерировать так:
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);
источник
Взгляните на FileSaver.js . Он предоставляет удобную
saveAs
функцию, которая устраняет большинство специфических особенностей браузера.источник