Google chrome extension 在Chrome打包的应用程序中无提示保存

Google chrome extension 在Chrome打包的应用程序中无提示保存,google-chrome-extension,google-chrome-app,Google Chrome Extension,Google Chrome App,我已经开始研究谷歌在Chrome上打包的应用程序,这似乎是一项伟大的技术,但还处于早期阶段 我的问题是:是否可以在没有提示的情况下使用应用程序中的文件系统API将文件保存到计算机?我想制作一个可以保存日志文件等的应用程序。有点像。您可以保存到应用程序的“工作区”,这意味着该文件将被保存,但用户或其他应用程序将无权访问该文件。它将位于沙盒存储区内。要做到这一点,只需使用HTML5文件系统API() 您需要:“权限”:[“存储”]在清单中,在js中,您可以执行以下操作: var onInitFsCa

我已经开始研究谷歌在Chrome上打包的应用程序,这似乎是一项伟大的技术,但还处于早期阶段


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

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

您需要:
“权限”:[“存储”]
在清单中,在js中,您可以执行以下操作:

var onInitFsCallback=函数(fs){
getFile('log.txt',{create:true},函数(fileEntry){
createWriter(函数(fileWriter){
_this.fileWriter=fileWriter;
fileWriter.onwriteend=onWriteEndCallback;
fileWriter.onerror=onErrorCallback;
fileWriter.write(myBlob);
fileWriter.write(myString);
},errorHandler);
},errorHandler);
};
window.webkitRequestFileSystem([window.TEMPORARY或window.PERMANENT],大小为字节,
onInitFsCallback、onErrorCallback);
您还可以使用Inspector工具(参考资料->文件系统)检查应用程序的文件系统。从那里,您可以下载或删除文件。在Chrome24中,您需要在中启用开发人员工具chrome://flags,单击DevTools设置菜单上的“实验”,并启用文件系统检查


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

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

但是有一个新项目叫做Node Webkit,它与Chrome打包应用非常相似,你可以在Chrome中用HTML、js等开发你的应用,你也可以在浏览器中运行nodejs。使用它,您可以访问文件系统和更多内容

在这里查看: 及

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

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);
});

看起来你很快就能做到这一点了--请看

谢谢,我会看一下的。你确定它能在打包的应用程序中工作吗?是的,它能。您需要:
“权限”:[“存储”]
在清单中,在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!我一直在关注这个,不幸的是,这不是我想要的,但很高兴以后能知道。似乎Adobe Air是我现在的选择。不幸的是,在Adobe看来,Air似乎有点不受欢迎。改用Chrome会很棒。@arpo,如果你能更好地描述一下你的用例,我可以n或者看看是否有其他解决方案,或者在最后一种情况下,将其放入“我们现在不能做但用户已请求的事情”列表中,以便将来开发该平台。