所以在我的应用程序中,我的应用程序创建了一个本地存储(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在打包的应用程序中不可用。
答案 0 :(得分:1)
请改用chrome.filesystem和chrome.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)
}) })