在Chrome打包应用中保存,不提示

时间:2012-09-19 08:14:25

标签: google-chrome-extension google-chrome-app

我已经开始关注Chrome中的Googles打包应用程序,http://developer.chrome.com/apps这似乎是一项很棒的技术,但是处于早期阶段。

我的问题是:是否可以在没有提示的情况下使用应用程序中的fileSystem API将文件保存到计算机?我想制作一个可以保存日志文件等的应用程序。

3 个答案:

答案 0 :(得分:3)

我与参与打包应用程序开发的人进行了一些对话,因为现在您无法访问文件系统而无法提示我们在应用程序沙箱之外。但它可能会在未来出现。

但是有一个名为Node-Webkit的新项目与Chrome打包应用程序非常相似,您可以使用HTML,js等在Chrome中开发应用程序,您也可以在浏览器中运行nodejs。使用它,您可以访问文件系统和更多的东西。

在这里查看: https://github.com/rogerwang/node-webkithttps://github.com/rogerwang/node-webkit/wiki

在Node-Webkit中加载和保存文件非常简单。看起来像这样

var gui = require("nw.gui");
var fs = require("fs");

//Save
fs.writeFile('message.txt', 'Hello Node', function (err) {
    if (err) throw err;
    console.log('It\'s saved!');
});

//Load
fs.readFile('message2.txt', 'utf8', function (err, data) {
    if (err) throw err;
    console.log(data);
});

答案 1 :(得分:2)

看起来您很快就能做到这一点 - 请参阅https://groups.google.com/a/chromium.org/forum/#!topic/apps-dev/fu1TyjdYLEc

答案 2 :(得分:-1)

有点儿。您可以保存到应用程序的“工作区”,这意味着文件将被保存,但用户或其他应用程序将无法访问它。它将位于沙盒存储区域。要做到这一点,只需使用HTML5文件系统API(tutorial here)。

您需要:清单中的"permissions": ["storage"],以及您可以执行的js:

var onInitFsCallback=function(fs) {
  fs.root.getFile('log.txt', {create: true}, function(fileEntry) {
    fileEntry.createWriter(function(fileWriter) {
      _this.fileWriter = fileWriter;
      fileWriter.onwriteend = onWriteEndCallback;
      fileWriter.onerror = onErrorCallback;
      fileWriter.write(myBlob);
      fileWriter.write(myString);
    }, errorHandler);

  }, errorHandler);

};
window.webkitRequestFileSystem([window.TEMPORARY or window.PERMANENT], sizeInBytes,
  onInitFsCallback, onErrorCallback);

您还可以使用Inspector Tools(资源 - > Filesystem)检查应用程序的文件系统。从那里,您可以下载或删除文件。在Chrome 24中,您需要在chrome:// flags中启用Developer Tools实验,单击DevTools设置菜单,实验,然后启用FileSystem检查。

另一方面,如果要保存在应用程序沙箱之外的任意位置,出于安全原因需要用户提示。