Chrome扩展程序如何将许多文件保存到用户
我正在研究Chrome扩展程序以用作内部工具。 其要求的行为是:
这个问题之前已经被问到过,但是答案是“使用NPAPI”,现在NPAPI已经失效了。
那么,目前可用的方法是什么呢? 我看过的是:
我可以尝试另一种方法吗?
你做了很多研究。 事实上,没有任何插件或扩展,常规网页就无法写入用户的文件系统。 如您所见,HTML5 Filesystem API仅提供对虚拟文件系统的访问。
但是,您将chrome.fileSystem
API与HTML5 FileSystem API混淆在一起。 与HTML FileSystem API不同,Chrome的fileSystem
(app)API可以直接写入用户指定的用户文件系统(例如~/Documents
或%USERPROFILE%Documents
)。
此API仅适用于Chrome 应用 ,而不适用于扩展程序。 这不是问题,尤其是因为您正在开发内部工具,因为您可以安装应用程序和扩展,并使用消息传递来在扩展(页面操作)和应用程序(文件系统访问)(示例)之间进行通信。
关于chrome.downloads
:由于您的扩展名是内部的,因此您可能会强制用户登录beta / dev频道以使用此API。 此API的唯一限制是文件将保存在用户定义的下载文件夹(的子目录)中。
编辑: chrome.downloads
API现在可用于所有渠道,包括稳定的分支(自Chrome 31以来)。
我担心你已经完成了功课,这意味着你考虑了所有可能的选择。
使用支持的本地应用程序并通过本地消息传递进行通信(正如您所提到的那样),实现您想要的内容的最佳方式是。 顺便说一下,由于带宽在内联网上很少出现问题,因此您可能会发现传递资源(例如图像)URL并下载应用程序并将其保存起来更简单。
(是的,这会比简单地开发扩展程序更麻烦,但是他们必须做他们必须做的事,对吧?)
另一方面,如果您愿意牺牲一点用户体验以简化开发,我建议将HTML5好东西(允许您在本地创建和下载文件)与JS压缩库(例如JSZip )结合使用,所以用户只需下载一个zip文件(并且只提示一次)。 顺便说一句,如果用户希望,他/她可以选择始终下载文件而无需提示(但您已经知道)。
使用本地消息应用程序的想法。
原生应用程序很麻烦,而且编写起来很痛苦,因为文档很差,除非您在两端都精确地获得JSON格式,否则将无法在控制台中看到任何内容,因为stdin和stdout会被接管。
但是,当你完成这个任务时你会更高兴,因为你可以使用标准工具(例如,Windows资源管理器,十六进制编辑器,TeamViewer等)查看,移动和删除文件,或者查看正在发生的事情。 Chrome的沙盒文件系统可以工作,但似乎现在已经成了一个死胡同(没有其他浏览器已经选择了它)。 没有人会为它开发第三方工具。 当然,一旦一切正常,你可能不需要工具,但在那之前,调试是一场噩梦,因为你需要编写代码(以及相当多的代码)来跟踪哪些文件位于哪些目录,文件版本,剩余的磁盘空间...
链接地址: http://www.djcxy.com/p/66581.html