Подтвердить что ты не робот

Сохранение строки json на клиентский ПК (с использованием HTML5 API)

Я прочитал несколько старых тем примерно так же, но видел, что API файлов сильно изменился в последнее время. Мое требование - сохранить json файл (данные локально находятся в indexdDB, но мне нужен способ его резервного копирования). Поскольку я использую indexdDB, я использую только последние браузеры, в основном хром. Таким образом, можно сохранить данные (json string) на клиентский компьютер?

Я видел http://eligrey.com/demos/FileSaver.js/, но есть ли способ сделать это изначально?

Спасибо.

4b9b3361

Ответ 1

Вы можете использовать Blob и функцию HTML5 a[download], чтобы предоставить резервную копию JSON скачать:

var data = {a:1, b:2, c:3};
var json = JSON.stringify(data);
var blob = new Blob([json], {type: "application/json"});
var url  = URL.createObjectURL(blob);

var a = document.createElement('a');
a.download    = "backup.json";
a.href        = url;
a.textContent = "Download backup.json";

Вот пример jsfiddle: http://jsfiddle.net/potatosalad/yuM2N/

Ответ 2

Да, вы можете. Это предполагает, что у вас есть json в text:

var toDownload=new Blob([text],{type:'x-whatever/x-backup'});
var link=window.URL.createObjectURL(toDownload);
window.location=link;

который не тестировался, но он должен работать.

Ответ 3

на основе ответа на картофелят, я экспериментировал с ссылкой на самообслуживание:
jsfiddle

function saveAsFile(link, content, filename) {
    var blob = new Blob([content], {type: "text/text"});
    var url  = URL.createObjectURL(blob);

    // update link to new 'url'
    link.download    = filename + ".txt";
    link.href        = url;
}

saveAsFile(this, "YourContent", "HelloWorldFile");

для функции saveAsFile() нужен элемент вызова a в качестве первого аргумента.
чем обновляет цель href к новому блобу.

Ответ 4

Вы можете использовать FileSaver.js.

Пример кода:

//include the js file in html.
<script src="FileSaver.min.js"></script>    

// other code ...

//use it here.
var myjson= "{a:3, b:4}";
var blob = new Blob([myjson], {type: "application/json"});

var saveAs = window.saveAs;
saveAs(blob, "my_outfile.json");

Используйте JSON.stringify для создания строки из JSON.

Fiddle: https://jsfiddle.net/9w9ofec4/3/