2016-03-25 5 views
-1

複数のfileEntryオブジェクトを保持して、ユーザーがchromeファイルシステムAPIを使用してアプリケーションを開いたときに再利用するにはどうすればよいですか?私は、ファイルのエントリを格納するために配列を使用しようとしたと私はアプリを再起動し、それらを使用することはできませんまで正常に動作します。 FileEntryオブジェクトを返す代わりに、コンソールでオブジェクトオブジェクトが返されます(これは、ユーザがアプリケーションを再起動すると、chrome.storage.local.setchrome.storage.local.getを使用してエントリを設定および取得した後です)。chromeファイルシステムAPIを使用して複数のfileEntriesを保持しますか?

+2

私はあなたのコードが不安定であることがわかりました。 –

+0

@DanielHerr?私は助けを求めています。私はコードが邪魔にならないようにしています。クロムファイルシステムAPIを使用して複数のファイルエントリを保持して復元する方法が必要です。 – Devplex

+0

あなたが持っているものを投稿しないとどのように助けられますか? –

答えて

1

セッション間で実際のファイルエントリを保持することはできません。格納できるIDを返す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オブジェクトがあります。

関連する問題