4

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

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

4

3 回答 3

3

我与参与打包应用程序开发的人员进行了一些对话,就像今天一样,如果不提示我们在应用程序沙箱之外,您将无法访问文件系统。但它可能会在未来出现。

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

在这里查看: https ://github.com/rogerwang/node-webkit和 https://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);
});
于 2012-11-29T10:44:54.380 回答
2

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

于 2013-08-16T14:49:02.253 回答
-1

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

您需要:"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);

您还可以使用检查器工具(资源 -> 文件系统)检查应用程序的文件系统。从那里,您可以下载或删除文件。在 Chrome 24 中,您需要在 chrome://flags 中启用开发者工具实验,点击 DevTools 设置菜单,实验,并启用文件系统检查。

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

于 2012-10-03T18:22:39.063 回答