2016-03-25 2 views
-1

Как сохранить несколько объектов fileEntry для повторного использования, когда пользователь открывает приложение с помощью API-интерфейсов xrome? Я пытался использовать массивы для хранения записей файла, и он работает нормально, пока я не перезапущу приложение и не могу их использовать. Вместо того, чтобы возвращать FileEntry объект консоль возвращает объект объекта (это после того, как я использовал chrome.storage.local.set и chrome.storage.local.get для установки и извлечения записей, как только пользователь перезагрузил приложение.)Сохранять несколько файлов с помощью API-интерфейсов хром-файлов?

+2

Я нахожу ваш недостаток кода нарушающим. –

+0

@ DanielHerr? Я прошу о помощи. Я нахожу, что вам не хватает кода. Мне просто нужен способ сохранить и восстановить файлы _multiple_ file с помощью API-интерфейсов chrome. – Devplex

+0

Как вам помочь, если вы не публикуете то, что у вас есть? –

ответ

1

Вы не можете сохраняться фактические записи файлов между сессиями. Вам нужно использовать chrome.fileSystem.retainEntry, который вернет идентификатор, который вы можете сохранить, а затем используйте chrome.fileSystem.restoreEntry, чтобы восстановить доступ к записи при повторном открытии приложения.

0

После многого назад и вперед я выяснил, как сохранить несколько fileEntries. Вот код для людей, которые в этом нуждаются.

//save 
    //'fileEntries' is an array that I made earlier where multiple entries were stored 
    var keep = []; 
    fileEntries.forEach(function(entry, index) { 
    //if it's empty or null, return nothing 
    //otherwise add the id to our empty array 'keep' 
    if (entry == null) { 
     //do nothing 
    } else { 
     keep[index] = chrome.fileSystem.retainEntry(entry); 
    } 
    }); 
    chrome.storage.local.set({ 
    retained: keep 
    }); 
    //load 
    chrome.storage.local.get('retained', function(data) { 
    var retained = data.retained; 
    retained = retained.filter(function(d) { 
    return d 
    }); 
    for (var i = 0; i < retained.length; i++) { 
    var tab = retained[i]; 
    chrome.fileSystem.restoreEntry(tab, function(entry) { 
     fileEntries.push(entry); 
    }); 
    } 
}); 

И .... это об этом! Когда функция загрузки выполнена, массив fileEntries имеет все объекты fileEntry!

Смежные вопросы