Chrome打包应用;将fileEntry复制到用户的下载目录

时间:2015-10-26 08:45:40

标签: javascript google-chrome-app

所以在我的应用程序中,我的应用程序创建了一个本地存储(fileEntry)。我想添加一项功能,让用户可以访问该文件。由于应用程序本身无法访问"下载"目录,目前我正在使用以下代码:

let link = document.createElement('a');
link.download = obj.name;
link.href = URL.createObjectURL(file);
link.dispatchEvent(new MouseEvent('click'));

fileEntry.file(function (file){})抓取文件。代码工作正常,但问题是我的文件很大(500MB),当我创建createObjectURL时Chrome会使用两次内存,因为内容会复制到blob中。我唯一想要的是"移动"从内部存储到用户"下载"目录。我知道在扩展程序中,可以使用chrome.download API,但此API在打包的应用程序中不可用。

1 个答案:

答案 0 :(得分:1)

请改用chrome.filesystemchrome.storage api。首先,将权限添加到manifest.json:

permissions: [ "storage", { "fileSystem": [ "write", "retainEntries", "directory" ] } ]

然后访问实际文件系统上的文件夹并保存以供日后使用。

chrome.fileSystem.chooseEntry({ type: "openDirectory" }, function(folder) {
 chrome.storage.local.set({ folder: chrome.fileSystem.retainEntry(folder) })
})

然后,您可以将其恢复并像普通目录条目一样使用它。

chrome.storage.local.get("folder", function(storage) {
 chrome.fileSystem.restoreEntry(storage.folder, function(folder) {
  entry.moveTo(folder)
}) })