Javascript, программно запускает загрузку файла в firefox
У меня есть uri данных в памяти, который я хотел бы, чтобы пользователь загрузил.
эта скрипка работает в chrome, но не FF:http://jsfiddle.net/6W2TY/
когда вы нажмете run, он загрузит крошечное изображение в chrome и ничего не сделает в FF. Может ли кто-нибудь помочь мне понять, почему он не работает в FF и что мне нужно сделать, чтобы он работал?
спасибо!
2 ответов
вы используете новый (html5)скачать атрибут. насколько я знаю, это поддерживается только в Chrome, а не (пока) в Firefox.
обновление 3-2018
Эта функция теперь поддерживается в почти все основные браузеры (нет поддержки IE).
альтернатива: использование местоположения.хреф!--17-->
другой способ принудительной загрузки-перенаправить пользователя на изображение следующим образом:
// generate the image
var img = ""
// then call a function maybe onClick or something
downloadImage(img);
function downloadImage(data) {
location.href = "data:application/octet-stream;base64," + data;
}
или короткая версия
location.href = "data:application/octet-stream;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABWSURBVDhPY0xISPh//0UOA7mAiVyNMH2jBjAwkBQGjD9KGBTEJ6OEO0kG2NvbMwCjnXwDsEU5SS5ANuDhjRCGJbPFSQsDdBfIyMhQZgDIQLK9QLWkDABPsQw5I+5qmAAAAABJRU5ErkJggg=="
Альтернатива: Серверная Сторона
в качестве альтернативы, если вы обрабатываете сервер изображений, вы можете принудительно загрузить, установив заголовок Content-disposition.
пример на PHP
header('Content-Disposition: attachment; filename="image.png"');
Я понимаю, что это старый пост, но я наткнулся на него, когда у меня была аналогичная проблема с загрузкой файлов в FF. Возможно, это не сработало в FF в то время, когда был написан вопрос, но теперь это так.
a = document.createElement('a');
document.body.appendChild(a);
a.download = name;
a.href = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABWSURBVDhPY0xISPh//0UOA7mAiVyNMH2jBjAwkBQGjD9KGBTEJ6OEO0kG2NvbMwCjnXwDsEU5SS5ANuDhjRCGJbPFSQsDdBfIyMhQZgDIQLK9QLWkDABPsQw5I+5qmAAAAABJRU5ErkJggg==";
a.click();
изменения от оригинальной скрипки:
- добавить вызов
document.body.appendChild(a);
- изменить
triggerEvent()
toa.click()
вот обновленная скрипка: http://jsfiddle.net/70f91ao7/6/