オフラインで実行し、オンラインでもう一度同期できるようにする必要がある Chrome 拡張機能を作成する必要があるプロジェクトを開始しています。したがって、Chrome拡張機能がファイルをダウンロードして、ファイルごとにユーザーにプロンプトを表示せずにローカルに保存する手段があるかどうかを知りたいです(ファイルの量はかなりの量になる可能性があります)
同様のことができる chrome.storage モジュールを見たことがありますが、ファイルが多い場合のパフォーマンスが心配です。パフォーマンスに関する情報があれば、私も興味があります。
編集: Chrome のファイルシステム機能でテストしました。ソースは次のとおりです。
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
function onError(e) {
console.log('Error', e);
}
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://upload.wikimedia.org/wikipedia/fr/2/26/10_francs_Mathieu_1987_F365-28_revers.jpg', true);
xhr.responseType = 'blob';
xhr.onload = function(e) {
window.requestFileSystem(PERSISTENT, 1024 * 1024, function(fs) {alert(fs.root.name);}, onError);
window.requestFileSystem(PERSISTENT, 1024 * 1024, function(fs) {
fs.root.getFile('image.jpg', {create: true}, function(fileEntry) {
fileEntry.createWriter(function(writer) {
writer.onwrite = function(e) {};
writer.onerror = function(e) {};
var blob = new Blob([xhr.response], {type: 'image/jpeg'});
writer.write(blob);
}, onError);
}, onError);
}, onError);
};
xhr.send();
動作しているように見えますが、ファイルがどこにも表示されません。絶対パスを指定するなど、保存パスに別のことを試みましたが、成功しませんでした。何か案が?