chrome 扩展 - 有没有办法永久保存文件?

asa*_*ion 6 javascript google-chrome google-chrome-extension

我正在开发一个 chrome 扩展程序,我想将一些数据永久存储在用户系统的文件中,以便我可以在用户每次运行扩展程序时检索该数据。

有没有办法可以使用 chrome javascript API 来完成此任务?

提前致谢。

Han*_*obo 8

根据您的描述,听起来您最好使用Chrome Storage API,它将数据写入浏览器管理的数据库中。它在会话和浏览器重新启动期间保留。

chrome.storage.sync.set({'theKey': theValue}, optionalSuccessCallback);
Run Code Online (Sandbox Code Playgroud)

使用任意数量的键和任意值,只要它是可序列化的。这速度很快,对于配置设置等特别有用。您的扩展程序需要请求许可:

"permissions": ["storage"]

如果您确实想创建文件(例如,稍后将一堆 mp3 用作实际文件),Anatoly 是对的,请使用webkitRequestFileSystem。它需要相当多的回调:

function onInitFs(fs) {
  fs.root.getFile('log.txt', {create: true}, function(fileEntry) {

    // Create a FileWriter object for our FileEntry (log.txt).
    fileEntry.createWriter(function(fileWriter) {

      fileWriter.onwriteend = function(e) {
        console.log('Write completed.');
      };

      fileWriter.onerror = function(e) {
        console.log('Write failed: ' + e.toString());
      };

      // Create a new Blob and write it to log.txt.
      var blob = new Blob(['Lorem Ipsum'], {type: 'text/plain'});

      fileWriter.write(blob);

    }, errorHandler);
  }, errorHandler);
}

window.requestFileSystem(window.TEMPORARY, 1024*1024, onInitFs, errorHandler);
Run Code Online (Sandbox Code Playgroud)


Ana*_*nov 1

这可以通过webkitRequestFileSystem实现。您将能够访问沙盒持久文件夹以创建和读取文件。