Диалог выбора каталога в WebExtension - PullRequest
0 голосов
/ 08 ноября 2018

Из надстройки Firefox, реализованной в виде WebExtension, я хотел бы позволить пользователю выбрать локальный каталог, если это возможно, с помощью стандартного диалогового окна выбора каталога (вариант диалога «открыть файл»).

Можно ли это сделать из WebExtension? Если да, то как?

(В обычном JavaScript / HTML на веб-сайте это невозможно по соображениям безопасности. См., Например, Выбор пути к каталогу в JavaScript . Но как пользователь должен несколько доверять дополнению, мне интересно возможно ли это там.)

Контекст: я хотел бы сделать простой массовый загрузчик, который позволит пользователю выбрать целевой каталог для нескольких загружаемых файлов, а не просто выбросить их все в папку загрузок по умолчанию, но без отображения " Сохранить как "диалог для каждой отдельной загрузки.

1 Ответ

0 голосов
/ 09 ноября 2018

Насколько мне известно, WebExtensions не может записывать в произвольные папки даже при вмешательстве пользователя.

Однако вы можете частично выполнить свое требование, если согласитесь использовать подпапку в папке donwloads по умолчанию.

browser.downloads API позволяет указать «рекомендуемое имя файла», в котором находится папка. Это может быть только относительный путь, и он относится к папке по умолчанию.

Если вы сами запускаете загрузку:

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

Если вы не знаете окончательного имени или пользователь инициирует загрузку, к сожалению, Firefox не имеет эквивалента onDeterminingFilename события Chrome . Но для массового загрузчика вы должны быть тем, кто его инициирует, и незнание того, какое имя файла будет сообщать сервер, в принципе можно проверить с помощью запроса HEAD перед загрузкой (не проверял).

...