Chrome应用程序,持久性文件系统,Chrome重启后文件丢失

时间:2014-05-20 09:17:13

标签: google-chrome-app html5-filesystem

我正在开发一个使用带有持久存储的HTML5文件系统的Chrome应用程序,我的数据在chrome重新启动后丢失,我测试了几次,重启后10个数据丢失了9次,我已经解雇了{{ 3}}在Chromium网站上,我想知道是否有解决方法或我做错了什么。这是我的代码:

window.webkitRequestFileSystem(window.PERSISTENT, 120*1024*1024, function(fs) {
    function gotFileEntry(fileEntry) {
        fileEntry.createWriter(gotFileWriter, fail);
    }

    function gotFileWriter(writer) {
        writer.onwriteend = function(evt) {
            done && done();
        };      
        writer.write(blob);
    }
    fs.root.getFile(path, {create: true, exclusive: false}, gotFileEntry, fail);
}, fail);

我找到了一个类似issue的人问过,但我确定我设定了足够大的配额(120M)。 此问题适用于Chrome应用,适用于旧版打包应用,没问题。

更新: Chrome团队已确认此问题,该补丁将登陆Chrome 37。

2 个答案:

答案 0 :(得分:1)

回答我自己的问题:) 我想我发现了问题,它确实是一个chrome bug,但只是当你卸载你的应用程序然后重新安装相同的应用程序而没有重新启动chrome 时,由于某种原因,chrome记住卸载的应用程序,它将“延迟“在下次重新启动chrome时清理文件系统。

此问题可能比您想象的更严重,如果您希望重新安装的应用程序正常运行,您必须在同时卸载旧版本后重新启动所有具有相同Google帐户的计算机,您必须确保所有副本在重新安装之前,所有设备都会卸载,Google会将新应用程序安装到您的所有设备上。否则在未重新启动的计算机上使用该应用程序时会出现问题。

我已将评论添加到我的issue Chrome,希望他们能解决此问题。

答案 1 :(得分:0)

试试这个:

  1. 在清单中请求unlimitedStorage:

    "权限":[     " unlimitedStorage" ]

  2. 在API调用中使用大小为零:

    webkitRequestFileSystem(PERSISTENT,0,haveFileSystem,errorHandler);

  3. 理论上,应该要求用户批准某种规模的请求,但经过大量测试后,我们确定Chrome应用程序从未这样做过。相反,Chrome应用程序只是使用它想要的东西,类似于OS X,Linux,Windows等上的应用程序。