突破!这些使用一些实验性功能,我不知道这是否真的有效。首先,让我们通过下载一个虚拟文件来找出下载目录的路径:
chrome.experimental.downloads.download({url:"data:text/plain,",filename:"~dummy.tmp"},
function (downloadId, error) {
if (error) { /* do stuff */ }
// get the DownloadItem object
chrome.experimental.downloads.search({downloadId: downloadId}, function(items) {
// this is the absolute filesystem location of where it was downloaded!
var filename = items[0].filename;
// if we remove dummy.tmp from the end we have the downloads directory!
// also in case it's windows replace backslashes with forward slashes.
var downloads_directory = filename.replace(/~dummy.tmp$/i,"").replace(/\\/g,"/");
});
});
在此之后,我预计有两种方法可以完成您的扩展:
(稍微难一点)现在我们有了下载目录,让我们访问 file:/// url。将"file://*"
权限添加到您的清单文件。您需要告诉您的用户导航到chrome://extensions
,找到您的扩展程序,然后勾选它旁边的“允许访问 file:// URLs”。您可以检查以确保用户已通过isAllowedFileSchemeAccess完成此操作。
根据您的操作系统,前往file:///home/
或进行尝试。file:///C:/
它应该显示您计算机中文件的目录。我相信可以使用 XMLHttpRequest 来获取这些文件的 HTML(提示:使用xhr.responseType = "document"
),您可以对其进行解析以构建自己的用户界面来选择文件夹!(要添加文件夹,只需将文件下载到您要添加的路径即可。)
您也可以简单地调用chrome.experimental.downloads.download
withsaveAs: true
让用户将临时文件下载到他们想要保存到的文件夹中。然后,去掉最后的文件名,去掉开头的下载路径,得到一个相对路径,以后可以保存文件!
我很高兴看到你的扩展结果如何。祝你好运!