С появлением атрибута download
у ссылок, появилась возможность указать браузеру что файл в href=""
нужно сохранить на диске.
В атрибуте можно указать имя файла, которое будет использоваться при сохранении.
Если нужно запустить скачивание файла по кнопке, поможет jQuery. По событию onclick
у кнопки, создается, но не выводится ссылка с атрибутом download
, далее по ней происходит программный клик.
$('.download').on('click', function(){
var link = document.createElement('a');
link.setAttribute('href', '/download.png');
link.setAttribute('download', 'download.png');
link.click();
return false;
});
Также можно получить файл через AJAX и отдать его на скачивание. Это удобно если файл генерируется PHP-скриптом на лету с переданными ему GET/POST параметрами.
После выполнения запроса в бинарном режиме, создается ссылка с атрибутом download
и данными в формате blob.
$('.download').on('click', function(){
$.ajax({
url: '/download.png',
dataType: 'binary',
xhrFields: {
'responseType': 'blob'
},
success: function(data, status, xhr) {
var blob = new Blob([data], {type: xhr.getResponseHeader('Content-Type')});
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'download.png';
link.click();
}
});
});