Chrome 应用程序中的无限文件存储

mar*_*ain 5 html javascript google-chrome google-chrome-extension google-chrome-app

我想将无限数量的文件保存到用户的硬盘驱动器,而不需要用户单击对话框。

我见过的关于使用无限存储的唯一文档在这里: https: //developers.google.com/chrome/whitepapers/storage,它说它仅适用于 Chrome 应用程序。

我见过的 Chrome API 的所有示例都fileSystem表明,为了创建新文件并向其写入内容,用户需要从函数中获取条目对象chrome.fileSystem.chooseEntry,这意味着用户需要通过一个对话框。

常规fileSystemAPI 看起来可以将文件保存到用户的扩展沙箱中,而不需要用户通过对话框,但我想知道,它是否具有"unlimitedStorage"仅授予应用程序的权限?如果只有 Chrome API 拥有该权限,我不会感到惊讶。

如果我使用常规fileSystemAPI,我需要使用请求文件系统window.webkitRequestFileSystem(我有点惊讶window.requestFileSystem在 Chrome 中不适用于我),但该方法需要type("persistent""temporary"),以及size(应用程序存储所需的字节数)论据。

显然,您不会在 Chrome API 中执行此操作。但是,普通fileSystemAPI 允许您在需要时使用配额管理 API 请求更多存储空间,这也记录在我上面链接的页面上

在https://developers.google.com/chrome/apps/docs/developers_guide#manifest上,它说:

"permissions"字段允许您指定应用程序所需的 HTML5 权限。通过指定"unlimitedStorage""notifications",此应用程序能够使用这些 HTML5 功能,而无需反复请求用户许可。在应用程序安装过程中,用户会被告知该应用程序需要哪些权限;安装应用程序会隐式授予其 URL 与"apps"清单字段中的 URL 匹配的所有页面的这些权限。

因此,我希望该"unlimitedStorage"权限只是意味着我可以直接调用window.webkitRequestFileSystem(window.PERSISTENT, anySize, successCallback),而不是要求用户在需要时提高配额,Chrome 会自动执行此操作。

问题1:有谁知道这是否有效?

但是,如果只有 chrome API 具有该"unlimitedStorage"权限,我可以尝试使用常规 API 创建一个文件条目,并将该条目传递到 Chrome API 函数中,从而跳过对对话框的需要,并获得对该权限的访问权限"unlimitedStorage"

问题 2:我是否可以在一个 API 中创建条目并将其传递给另一个 API?恐怕不同的 API 可能有不同的沙箱。

API的文档fileSystem不是很好,所以我想我应该问问是否有人从以前的经验中知道。兔子洞越少越好。

Mar*_*ind 2

首先,为了避免混淆,这里所说的“打包应用程序”应该称为“Chrome应用程序”。

如果任何其他应用程序要使用该 blob,则必须获取via FileEntrychrome.fileSystem.chooseEntry以便将数据写入用户可以访问的计算机文件系统。(您可以通过这种方式从用户处获取目录并保存保留的条目,然后使用它而无需每次都要求用户做出选择。)

如果 blob 仅供该 Chrome 应用使用,您可以使用文件 API,而无需调用chrome.fileSystem.chooseEntry.

至于限制,您是正确的,unlimitedStorage允许无限存储。在我的实验中,尽管有文档,但我从未能够让 Chrome 应用程序要求用户授权特定金额。我使用该权限,似乎没有限制。我读过的谷歌文档似乎不准确。

如果您要写入外部文件系统,则在调用 后chrome.fileSystem.chooseEntry,没有任何限制,并且不需要unlimitedStorage权限。