Spec-Zone.ru › Web Extensions

downloads.download()

Функция download() API downloads загружает файл по заданному URL и другим опциональным параметрам.

Если URL использует протокол HTTP или HTTPS, запрос включает все соответствующие куки, то есть куки, установленные для хоста URL, флага secure, пути и так далее. Используются стандартные куки, куки из обычной сессии браузера, если:

  • используется опция incognito, тогда используются куки из приватного режима.
  • используется опция cookieStoreId, тогда используются куки из указанного хранилища.

Если указаны как filename, так и saveAs, отображается диалог «Сохранить как», заполненный filename.

Это асинхронная функция, которая возвращает Promise.

Синтаксис

let downloading = browser.downloads.download(
  options                   // object
)

Параметры

options

Объект object, определяющий файл для загрузки и другие настройки. Он может содержать следующие свойства:

allowHttpErrors Необязательно

Флаг boolean, позволяющий продолжить загрузку даже при возникновении HTTP-ошибок. Например, это позволяет загружать страницы с ошибками сервера. Значение по умолчанию false. При значениях:

  • false, загрузка прерывается при обнаружении HTTP-ошибки.
  • true, загрузка продолжается при обнаружении HTTP-ошибки, и ошибка HTTP-сервера не сообщается. Однако, если загрузка терпит неудачу из-за ошибок, связанных с файлом, сетью, пользователем или другими причинами, ошибка сообщается.
body Необязательно

string представляющий тело запроса POST.

conflictAction Необязательно

Строка, представляющая действие, которое должно быть выполнено в случае конфликта имён файлов, как определено в типе downloads.FilenameConflictAction (по умолчанию "uniquify", если не указано).

cookieStoreId Необязательно

Идентификатор хранилища куки контекстуальной личности, с которой связана загрузка. Если опущено, используется хранилище куки по умолчанию. Требуется разрешение "куки" API.

filename Необязательно

string представляющий путь к файлу относительно каталога загрузок по умолчанию — это задаёт место сохранения файла и имя файла. Абсолютные пути, пустые пути, компоненты пути, начинающиеся и/или заканчивающиеся точкой (.), и пути, содержащие обратные ссылки (../) приведут к ошибке. Если опущено, это значение будет по умолчанию равно имени файла, уже присвоенному загружаемому файлу, и расположено сразу в каталоге загрузок.

headers Необязательно

Если URL использует протокол HTTP или HTTPS, array objects представляющий дополнительные HTTP-заголовки для отправки с запросом. Каждый заголовок представлен как объект словаря, содержащий ключи name и либо value, либо binaryValue. Заголовки, запрещённые XMLHttpRequest и fetch указать нельзя, однако Firefox 70 и выше позволяет использовать заголовок Referer. Попытка использования запрещённого заголовка приводит к ошибке.

incognito Необязательно

boolean: если присутствует и установлено в true, то эта загрузка будет связана с приватной сессией просмотра. Это означает, что она будет отображаться только в менеджере загрузок для любых открытых в настоящее время приватных окон.

method Необязательно

string представляющий HTTP-метод, который необходимо использовать, если url использует протокол HTTP[S]. Может быть либо "GET", либо "POST".

saveAs Необязательно

boolean определяющий, показывать ли диалог выбора файла для выбора имени файла (true) или нет (false).

Если этот параметр опущен, браузер будет показывать или скрывать диалог выбора файла в соответствии с общими пользовательскими настройками для этого поведения (в Firefox эта настройка называется «Всегда спрашивать, куда сохранить файлы» в about:preferences или browser.download.useDownloadDir в about:config).

Примечание: Firefox для Android генерирует ошибку, если saveAs установлено в true. Параметр игнорируется, если saveAs равно false или не указано.

url

string представляющий URL для загрузки.

Значение возврата

Promise. Если загрузка началась успешно, промис будет выполнен со значением id нового downloads.DownloadItem. В противном случае промис будет отклонен с сообщением об ошибке, взятым из downloads.InterruptReason.

Если вы используете URL.createObjectURL() для загрузки данных, созданных в JavaScript, и хотите позже аннулировать URL объекта (с помощью revokeObjectURL) (что настоятельно рекомендуется), вам нужно сделать это после завершения загрузки. Для этого прослушивайте событие downloads.onChanged.

Совместимость с браузерами

Рабочие столы Мобильные
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
download Да 79 47 ? Да Нет ? ? 48–79 ? Нет ?
allowHttpErrors Нет Нет 71 ? Нет Нет ? ? Нет ? Нет ?
body Да 79 52 ? Да Нет ? ? 52–79 ? Нет ?
conflictAction Да 79 47 ? Да Нет ? ? 48–79 ? Нет ?
cookieStoreId Нет Нет 92 ? Нет Нет ? ? Нет ? Нет ?
filename Да 79 47 ? Да Нет ? ? 48–79 ? Нет ?
headers Да 79
47Referer заголовки поддерживаются с версии 70.
? Да Нет ? ? 48–79 ? Нет ?
incognito Нет Нет 57 ? Нет Нет ? ? 57–79 ? Нет ?
method Да 79
47POST поддерживается с версии 52.
? Да Нет ? ?
48–79POST поддерживается с версии 52.
? Нет ?
saveAs Да 79
52До версии 58, если этот параметр опускался, Firefox никогда не отображал диалог выбора файла, независимо от значения пользовательских настроек браузера.
? Да Нет ? ? Нет ? Нет ?
END_OF_DOCUMENT_MARKER

Примеры

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

function onStartedDownload(id) {
  console.log(`Started downloading: ${id}`);
}

function onFailed(error) {
  console.log(`Download failed: ${error}`);
}

let downloadUrl = "https://example.org/image.png";

let downloading = browser.downloads.download({
  url : downloadUrl,
  filename : 'my-image-again.png',
  conflictAction : 'uniquify'
});

downloading.then(onStartedDownload, onFailed);

Примечание: Этот API основан на API chrome.downloads Chromium.

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/downloads/download

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API