WebExtension中的目录选择器对话框

时间:2018-11-08 17:26:31

标签: firefox directory firefox-addon firefox-webextensions fileopendialog

如果要通过标准目录选择器对话框(“打开文件”对话框的一种变体),我希望从Firefox附加组件(作为WebExtension实现)中选择本地目录。

这可以通过WebExtension完成吗?如果可以,怎么办?

(出于安全性原因,在网站上的常规JavaScript / HTML中是不可能的。请参见Select directory path in JavaScript。但是由于用户应该在某种程度上信任附加组件,所以我想知道那里是否有可能。)

上下文:我想制作一个简单的批量下载程序,使用户可以为多个要下载的文件选择目标目录,而不是将所有文件都放入默认的Downloads文件夹中,但不显示“每次下载均另存为”对话框。

1 个答案:

答案 0 :(得分:0)

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

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

browser.downloads API允许您放入包含文件夹的“建议文件名”。它只能是相对路径,并且是相对于默认文件夹的。

如果您要自己开始下载:

(defn weightedprob1
 [f cat]
  (let [weight 1
        ap 0.5
        basicprob (fprob f cat)
        totals (reduce + (vals (get @fc f)))
        bp (/ (+ (* weight ap) (* totals basicprob)) (+ weight totals))]
  bp))

如果您不知道姓氏,或者用户启动下载,那么可悲的是Firefox没有与Chrome的onDeterminingFilename event等效。但是对于批量下载程序,您应该是启动它的人,并且原则上不知道服务器将报告的文件名可以在下载之前通过HEAD请求进行检查(未经测试)。