Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как скачать файл через JS? (https://javascript.ru/forum/events/48870-kak-skachat-fajjl-cherez-js.html)

Dimaz 20.07.2014 13:20

Как скачать файл через JS?
 
Нужно скачать файл через Javascript. Ссылка хранится в переменной. Как это можно сделать?
Желательно скачать файл в объект, переименовать его и сохранить на компьютер. Такое возможно? Если нет, то хотя бы как его просто скачать?

MallSerg 20.07.2014 14:33

создать iframe src="http://ссылка-на-файл"

Dimaz 20.07.2014 15:33

var downloadURL = function downloadURL(url) {
    var hiddenIFrameID = 'hiddenDownloader',
        iframe = document.getElementById(hiddenIFrameID);
    if (iframe === null) {
        iframe = document.createElement('iframe');
        iframe.id = hiddenIFrameID;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
    }
    iframe.src = url;
};
downloadURL();

Создал. Вставляешь ссылку на аудиофайл, он просто воспроизводит его в фоне, но файл не скачивается.

BETEPAH 20.07.2014 16:52

если не гнаться за кроссбраузерностью, то можно создать ссылку с атрибутом download и "кликнуть" по ней.
<a href="images/name.jpg" download="newname.jpg">Скачать файл</a>

Dimaz 20.07.2014 17:14

Цитата:

Сообщение от BETEPAH (Сообщение 321933)
если не гнаться за кроссбраузерностью, то можно создать ссылку с атрибутом download и "кликнуть" по ней.
<a href="images/name.jpg" download="newname.jpg">Скачать файл</a>

Мне и не нужна кроссбраузерность. Я знаю про этот атрибут. Но хотелось бы, чтобы файл начал скачивать по одному клику, без создания всяких ссылок. Я пишу расширение для браузера Google Chrome, поэтому код будет интегрироваться на чужую страницу.

BETEPAH 20.07.2014 17:24

Dimaz,
да хоть вообще без кликов. Я же не зря слово "кликнуть" в кавычках написал :)
После создания ссылки с нужным именем в атрибуте download, делаете my_link.click().

Dimaz 20.07.2014 17:46

Цитата:

Сообщение от BETEPAH (Сообщение 321939)
Dimaz,
да хоть вообще без кликов. Я же не зря слово "кликнуть" в кавычках написал :)
После создания ссылки с нужным именем в атрибуте download, делаете my_link.click().

Не совсем понял как это сделать. Можно маленький пример?

newobject 20.07.2014 19:42

Цитата:

Сообщение от Dimaz
Можно маленький пример?

Типа того:

file=document.getElementById("id")
onload=file.click()

наверное, имелось в виду

Dimaz 20.07.2014 21:07

Цитата:

Сообщение от newobject (Сообщение 321952)
Типа того:

file=document.getElementById("id")
onload=file.click()

наверное, имелось в виду

спасибо большое

Dimaz 20.07.2014 22:20

Сделал так. Создается ссылка, но ее совсем не обязательно добавять на страницу. Даже так работает. Я рад:) Спасибо за помощь.
var link = document.createElement('a');
link.setAttribute('href','http://javascript.ru/forum/images/ca_serenity/misc/logo.gif');
link.setAttribute('download','download');
onload=link.click();

http://jsfiddle.net/4EzQL/


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