Как указать менеджер загрузок для сохранения в последний использованный каталог? - PullRequest
3 голосов
/ 26 февраля 2020

Я хочу вызвать загрузку так, чтобы она открыла диалоговое окно выбора файла в том месте, где они сохранили файл. Это функция, которую вы получаете, когда вы загружаете что-то вручную как пользователь, и в настройках браузера включена опция «Спрашивать, где сохранять каждый файл перед загрузкой».

Например, если вы сохраняете файл в C:/Pictures, тогда используйте мое дополнение для загрузки чего-либо, оно должно вызвать диалог выбора файлов и начать с C:/Pictures.

Отчет об ошибке, связанной с Chrome, находится здесь: https://bugs.chromium.org/p/chromium/issues/detail?id=838952&q=chrome.downloads.download&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified

Для небольшого обходного пути, чтобы сделать это на Chrome, я указываю saveAs: true в моих вариантах загрузки:

chrome.downloads.download({
  url: '...',
  saveAs: true,
});

Это дает мне функциональность, которую я ищу на Chrome. Однако в Firefox он всегда запускает диалоговое окно выбора файла в C:/Users/MikeY/Downloads, так как это мой каталог загрузок по умолчанию. Если я не укажу saveAs: true для Chrome, он сделает то же самое.

Есть ли подобный обходной путь для Firefox? Возможно, я могу как-то прочитать настройки браузера browser.download.lastDir и указать, что в filename?

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Это может быть то, что вы ищете, то есть download.lastDir.savePerSite. Это определяет, будет ли он загружаться в последний каталог, сохраненный в независимо от контекста , или на сайт, на котором вы находитесь при загрузке. Если вы хотите, чтобы каталог сохранения всегда был последним сохраненным каталогом sh, установите для него значение false .

РЕДАКТИРОВАТЬ: В качестве последующего действия вы не можете указать или получить его напрямую для использовать в коде расширения для любой дополнительной функциональности. Использование этого будет иметь то, что должно быть загружено клиентом firefox, равным download.lastdir. Если вы используете его только в назначении «url» для загрузки, то это обеспечивает все функциональные возможности. Но, как сказал пользователь выше, вы не можете получить это по соображениям безопасности.

0 голосов
/ 26 февраля 2020

Нет такой опции из-за безопасности. Как вы уже упоминали, возможны следующие варианты:

  • Использовать Сохранить как
  • Если указано, загрузить в папку, указанную в Параметры -> Файлы и приложения -> Загрузки -> Сохранить файл в

Однако, если указана папка для скачивания, вы можете установить предпочитаемый подкаталог папки для скачивания

Даже если у вас есть доступ к browser.download.lastDir, вы не можете указать его в downloads.download() API.

...