如何从 chrome v3 扩展访问通过 HTML 5 文件系统 API 保存的本地文件?

问题描述 投票:0回答:1

我的扩展使用旧库,它是 HTML 5 文件系统 API 的包装器,用于管理本地文件。

该库创建具有请求大小的持久存储。可以通过 chrome-extension://{extensionID}/ 链接访问存储文件。

但是从我的扩展页面中,我无法访问 元素内的这些图像。

从清单 v3 开始,文件系统 API 不能直接在 service_worker 进程中使用,我将其移至屏幕外页面。它工作正常,文件被正确保存,并且可以通过 filesystem url 访问和下载它们(不是从页面,而是通过 url,正在下载它们)。

我还知道,在清单 v3 中,您应该在 manifest.json 文件中描述 web_accessible_resourceshttps://developer.chrome.com/docs/extensions/reference/manifest/web-accessible-resources

所以,这个配置部分可能应该是这样的:

    "web_accessible_resources": [
        {
            "resources": ["persistent/*"],
            "matches": ["<all_urls>"]
        }
    ]

我这样做了,但仍然无法访问持久的本地文件。你能帮帮我吗,我哪里出错了?

我知道一种解决方案可能是将图标和图像转换为 base64 格式,但仍想考虑其他解决方案。

UPD:是否因为我的扩展名已解压而无法访问这些文件?

javascript google-chrome-extension
1个回答
0
投票

不用再回答这个问题了,我已经找到问题所在并解决了。正如我之前所说,我已将 Filesystem Api 的使用移至屏幕外页面,同时,我没有检查通过 chrome.runtime.sendMessage 发送的数据。我正在将网站图标解析为 blob,结果发现我需要将 blob 转换为 DataURL 格式,然后再将它们发送到屏幕外。

© www.soinside.com 2019 - 2024. All rights reserved.