在我的Chrome应用程序中,我正在将一些数据写入文件.我在Storage API下的官方网站上使用了以下代码
chrome.fileSystem.chooseEntry({type: 'saveFile'}, function(writableFileEntry) { writableFileEntry.createWriter(function(writer) { writer.onerror = errorHandler; writer.onwriteend = function(e) { console.log('write complete'); }; writer.write(new Blob(['1234567890'], {type: 'text/plain'})); }, errorHandler); });
现在我需要避免弹出保存对话框,并将此文件保存在预定义的位置.
这可能吗?
如果您想要持久数据,但又不想使用本地计算机上的数据位置来打扰用户,您有以下几种选择:
本地存储
IndexedDB的
HTML5文件API
chrome.storage
chrome.storage.sync
chrome.syncFileSystem
这些都不会为您提供用户可以访问的真实文件.如果用户(除了您自己的应用程序之外)需要能够访问您编写的文件,则需要询问用户将文件放在何处.正如Cerbrus在你的问题的评论中所说的那样,默默地将文件放在用户机器上的某个地方将是一个安全问题.
Chrome 31中的新功能是chrome.fileSystem.retainEntry.使用此API,您的应用程序将保留在应用程序重新启动时保留大量fileEntries(包括目录)的功能,这样您就不必一直指责用户选择文件位置.我的理解是,允许用户选择哪些位置存在限制,因此恶意应用无法指示用户指示Chrome覆盖系统文件.