0

从作为 WebExtension 实现的 Firefox 插件中,我想让用户选择一个本地目录,如果可能的话,使用标准目录选择器对话框(“打开文件”对话框的变体)。

这可以通过 WebExtension 完成吗?如果是这样,怎么做?

(在网站上的常规 JavaScript/HTML 中,出于安全原因,这是不可能的。参见例如Select directory path in JavaScript。但作为一个附加组件应该在某种程度上受到用户的信任,我想知道那里是否可能。)

上下文:我想做一个简单的批量下载器,它允许用户为多个要下载的文件选择一个目标目录,而不是仅仅把它们都扔到默认的下载文件夹中,但不显示“另存为”每个单独下载的对话框。

4

1 回答 1

0

据我所知,即使有用户干预,WebExtensions 也无法写入任意文件夹。

但是,如果您接受使用默认 donwloads 文件夹中的子文件夹,则可以部分满足您的要求。

browser.downloadsAPI允许您放置一个“建议的文件名”,其中包含一个文件夹。它只能是相对路径,并且是相对于默认文件夹的。

如果您自己启动下载:

function dowloadToFolder(url, name, subfolder) {
  browser.downloads.download({
    url: url,
    filename: `${subfolder}/${name}`
  });
}

如果您不知道最终名称,或者用户启动了下载,那么遗憾的是 Firefox 没有与 Chrome 的onDeterminingFilenameevent等效的功能。但是对于批量下载器,您应该是启动它的人,并且不知道服务器将报告什么文件名原则上可以在下载之前使用 HEAD 请求进行检查(尚未测试)。

于 2018-11-09T15:22:45.887 回答