我已经开始关注Chrome中的Googles打包应用程序,http://developer.chrome.com/apps这似乎是一项很棒的技术,但是处于早期阶段。
我的问题是:是否可以在没有提示的情况下使用应用程序中的fileSystem API将文件保存到计算机?我想制作一个可以保存日志文件等的应用程序。
答案 0 :(得分: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);
});
答案 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检查。
另一方面,如果要保存在应用程序沙箱之外的任意位置,出于安全原因需要用户提示。