3

我试图使用 chrome 中的文件系统 API 创建一个文件。最初我尝试如下持久存储

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
webkitStorageInfo.requestQuota(webkitStorageInfo.PERSISTENT, 1024*1024, 
    function(grantedBytes) {
        window.requestFileSystem(webkitStorageInfo.PERSISTENT, grantedBytes, onInitFs, 
        errorHandler);
    }, 
    errorHandler);

它最初工作正常。但是现在当我尝试相同的代码时给了我以下错误

NOT_SUPPORTED_ERR: DOM Exception 9

然后我尝试了 TEMPORARY 文件存储如下

window.requestFileSystem(TEMPORARY, 1024*1024, onInitFs, errorHandler);

这给了我一些带有代码 2 的 FileError,这意味着安全错误。谁能帮我解决这些问题?

4

2 回答 2

2

您是否尝试将代码放在存储在本地计算机上的页面中并使用 Chrome 运行?你加了flag吗

--allow-file-access-from-files

在您的 Chrome 快捷方式中?我碰巧遇到了和你一样的错误,突然我意识到我忘了添加这个标志来运行我的 chrome。

于 2012-07-02T16:28:37.590 回答
0

我无法重现您的错误。我做了一个简单的扩展,在内容脚本中使用文件系统 API,它对我来说很好用。您的控制台上是否出现任何错误?如果没有,请构建此代码并查看是否有更多错误。

清单.json:

{
  "name": "Testing FS",
  "manifest_version":2,
  "version": "1.0",
  "content_scripts": [
    {
      "matches":["*://*.google.com/*"],
      "js":["script.js"]
    }
  ]
}

脚本.js:

webkitStorageInfo.requestQuota(webkitStorageInfo.TEMPORARY, 1024*1024, function(grantedBytes) {
    console.log("bytes granted: ", grantedBytes);
    window.webkitRequestFileSystem(webkitStorageInfo.TEMPORARY, grantedBytes, onInitFs, errorHandler)
}, errorHandler);

function errorHandler(e) {
  console.log("FS error", e);
}

function onInitFs(fs) {
  fs.root.getFile('log.txt', {create: true}, function(fileEntry) {
      console.log(fileEntry);
  }, errorHandler);
}
于 2012-05-09T14:06:15.707 回答