Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.09.2014, 15:49
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Как изменить имя скачиваемого файла?
В 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();
Ответить с цитированием
  #2 (permalink)  
Старый 13.09.2014, 15:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

Только с помощью заголовков сервера, увы.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 13.09.2014, 15:57
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от Aetae Посмотреть сообщение
Только с помощью заголовков сервера, увы.
Жаль. А какой вообще максимальный размер blob можно вставить в href? Есть какие-то ограничения?
Ответить с цитированием
  #4 (permalink)  
Старый 13.09.2014, 16:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

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

Последний раз редактировалось Aetae, 13.09.2014 в 16:20.
Ответить с цитированием
  #5 (permalink)  
Старый 13.09.2014, 16:25
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как с помощью javascript взять данные из одного файла html и закинуть в другой? rusik Общие вопросы Javascript 10 08.08.2016 12:11
Как получить имя текущего файла Andrey_szr Элементы интерфейса 3 08.10.2012 10:18
Как изменить свойство css у всех элементов одного класса AlexJ Events/DOM/Window 7 19.03.2011 06:25
Как узнать какие ошибки произошли при парсинге xml файла faunder Events/DOM/Window 0 12.09.2008 14:17
оприделить имя файла www Общие вопросы Javascript 2 10.08.2008 14:34