Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как изменить имя скачиваемого файла? (https://javascript.ru/forum/misc/50129-kak-izmenit-imya-skachivaemogo-fajjla.html)

Dimaz 13.09.2014 15:49

Как изменить имя скачиваемого файла?
 
В 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();

Aetae 13.09.2014 15:50

Только с помощью заголовков сервера, увы.

Dimaz 13.09.2014 15:57

Цитата:

Сообщение от Aetae (Сообщение 330408)
Только с помощью заголовков сервера, увы.

Жаль. А какой вообще максимальный размер blob можно вставить в href? Есть какие-то ограничения?

Aetae 13.09.2014 16:17

На длину data-uri есть, а вот на blob не знаю. Т.к. blob - это ссылка на внутренний объект, то скорее всего только объём памяти ограничивает.)

Dimaz 13.09.2014 16:25

Цитата:

Сообщение от Aetae (Сообщение 330415)
На длину data-uri есть, а вот на blob не знаю. Т.к. blob - это ссылка на внутренний объект, то скорее всего только объём памяти ограничивает.)

Спасибо. Если так, то отлично:)


Часовой пояс GMT +3, время: 22:30.