Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   fileEntry.toURL() принудительное сохранение файла (https://javascript.ru/forum/misc/70780-fileentry-tourl-prinuditelnoe-sokhranenie-fajjla.html)

someQuestions 02.10.2017 17:32

fileEntry.toURL() принудительное сохранение файла
 
Всем привет!
Вот такой вот вопрос - как используя fileEntry.toURL() сделать ппринудительное сохранение файла(вызвать окно сохранения)?
Пример:
есть в "кэше" текстовый файл, и если сделать
location.href = fileEntry.toURL();

то браузер его просто откроет и покажет содержимое, а нужен запрос на сохранение.
Как я вижу решение проблемы - какой то особый MimiType. Пробовал 'application/octet-stream' - не работает, так же вспомнил про 'application/force-download' - тоже не проканало. Прошу совета.

Alexandroppolus 02.10.2017 17:51

https://github.com/eligrey/FileSaver.js

Rasy 02.10.2017 18:01

someQuestions, как вариант
var saveData = (function () {
        var a = document.createElement("a");
        document.body.appendChild(a);
        a.style = "display: none";
        return function (data, fileName) {
           var blob = new Blob([data], {type: "octet/stream"}),
               url = window.URL.createObjectURL(blob);
            a.href = url;
            a.download = fileName;
            a.click();
            window.URL.revokeObjectURL(url);
        };
    }());
    saveData('test', 'example2.txt');

someQuestions 02.10.2017 18:17

Цитата:

Сообщение от Alexandroppolus (Сообщение 466301)

Совершенно не то что нужно, но всё равно спасибо!
Цитата:

Сообщение от Rasy (Сообщение 466303)
someQuestions, как вариант
var saveData = (function () {
        var a = document.createElement("a");
        document.body.appendChild(a);
        a.style = "display: none";
        return function (data, fileName) {
           var blob = new Blob([data], {type: "octet/stream"}),
               url = window.URL.createObjectURL(blob);
            a.href = url;
            a.download = fileName;
            a.click();
            window.URL.revokeObjectURL(url);
        };
    }());
    saveData('test', 'example2.txt');

Спасибо, думал а невидимом href'e, но думал что то элегантнее есть... хотя куда элегантнее:) Спасибо!

someQuestions 03.10.2017 12:38

Единственно забыли
a.remove();

:)


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