Задать вопрос

Как изменить имя скачиваемого файла?

В 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();
  • Вопрос задан
  • 6419 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Power
См. https://developer.mozilla.org/en-US/docs/Web/HTML/... - там говорится, в том числе, что если сервер присылает имя файла в заголовке "Content-Disposition", то значение атрибута "download" игнорируется. Наверное, это ваш случай; если это так, то для вашей задачи нужно содействие со стороны сервера, который отдаёт файл.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы