我已经开始研究谷歌在Chrome中打包的应用程序,链接为http://developer.chrome.com/apps,这似乎是一项很棒的技术,但处于早期阶段。我的问题是:是否可能通过应用程序中的fileSystem API将文件保存到计算机而无需提示?我想制作一个可以保存日志文件等的应用程序。
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);
});
看起来您很快就能够做到这一点——请参见https://groups.google.com/a/chromium.org/forum/#!topic/apps-dev/fu1TyjdYLEc
有点类似。您可以保存到应用程序的“工作区”,这意味着文件将被保存,但用户或其他应用程序将无法访问它。它将位于沙盒存储区域中。要执行此操作,只需使用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);
"permissions": ["storage"]
,并在您的js中使用以下代码:var onInitFs=function(fs) { fs.root.getFile('log.txt', {create: true}, function(fileEntry) { fileEntry.createWriter(function(fileWriter) { fileWriter.onwriteend = onWriteEndCallback; fileWriter.onerror = onErrorCallback; fileWriter.write(...); }, errorHandler); }, errorHandler); }; window.webkitRequestFileSystem([window.TEMPORARY或window.PERMANENT], sizeInBytes, onInitFsCallback, onErrorCallback);
- mangini