В HTML5 есть атрибут download, который позволяет скачать любой файл по ссылке. Только вот поменять имя, скачиваемого файла, не получается.
link.setAttribute("download","new_name"); //не работает
Решил попробовать скачать файл с сервера с помощью объекта XMLHttpRequest level2. Затем вставить полученный blob в атрибут ссылки href. Победа! Теперь файл скачивается с нужным именем. Только вот приходится ждать, пока файл загрузится, и только потом появляется ссылка.
Можно, конечно, добавить индикатор загрузки файла, а затем вызвать событие клик по ссылке. Но мне хотелось бы начать скачивание файла стандартным(браузеровским) методом. Это возможно?
Код на
JSFiddle.
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
var blob = this.response;
var link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
link.setAttribute("download","new_name");
}
xhr.send();