在 Chrome 下载后访问文件数据...?

Accessing file data after download in Chrome...?

我正在编写一个扩展,理想情况下可以在文件下载后(通过正常下载过程)读取文件。那可能吗?我可以通过 chrome.downloads 操作获取文件名,但我找不到读取实际字节的方法。我不需要写也不需要移动它们,只是阅读。

不,下载 API 不提供访问文件内容的方法。

最接近拦截的是 WebRequest API,但目前 doesn't allow response access 也是。

您最多可以做的是使用 webRequest 捕获请求,取消它并尝试自己对其进行 XHR,将结果存储在某个临时位置,如提到的文件系统 API。这将是一个糟糕的用户体验(原始请求莫名其妙地失败)并且可能无法在所有情况下工作(因为 XHR 无法设置所有 headers 以完全复制请求)。

我遇到了完全相同的问题,最终找到了一个简单的解决方法,可以从 Chrome 扩展名读取下载文件的内容。

您只需要在您的清单文件中添加对 file://* 的权限,一旦您在系统中有了您的文件路径(chrome.downloads.searchfilename 属性), 向 url file://{filepath}.

发出 GET XMLHttpRequest

WhiteFangs 的解决方案对我有用。但是,我应该补充一点,使用文件协议的 XMLHttpRequest 仅在我从后台脚本启动时才对我有效。当我从内容脚本或浏览器操作的 javascript 环境中尝试时出现错误。