API предоставляет расширенные функции загрузки файлов, которые сохраняются после закрытия приложения, работают в фоновом режиме и продолжаются, даже когда пользователь закрыл/приостановил приложение. Плагин включает в себя текущие обновления и в первую очередь предназначен для долгосрочных операций передачи таких ресурсов, как видео, музыка и большие изображения.
Пример использования
var fileName = "PointerEventsCordovaPlugin.wmv", uriString = "http://media.ch9.ms/ch9/8c03/f4fe2512-59e5-4a07-bded-124b06ac8c03/PointerEventsCordovaPlugin.wmv"; // open target file for download window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { fileSystem.root.getFile(fileName, { create: true }, function (targetFile) { var onSuccess, onError, onProgress; // plugin callbacks to track operation execution status and progress var downloader = new BackgroundTransfer.BackgroundDownloader(); // Create a new download operation. var download = downloader.createDownload(uriString, targetFile); // Start the download and persist the promise to be able to cancel the download. app.downloadPromise = download.startAsync().then(onSuccess, onError, onProgress); }); });
Внутреннее и внешнее хранилище (SD-карта) на Android
Внешнее хранилище
разрешить каталог cordova.file.externalDataDirectory
во время выполнения
window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
Обратите внимание, что устройство может быть без внешнего накопителя. В этом случае cordova.file.externalDataDirectory
будет иметь null
, поэтому его следует проверить перед использованием.
Внутреннее хранилище
разрешить каталог cordova.file.dataDirectory
во время выполнения
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
Прочтите особенности файлового плагина для более подробной информации:
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#android-quirks.
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#configuring-the-plugin-optiona
Поддерживаемые платформы
Windows8
Windows Phone8
iOS 7.0 или новее
Андроид
Причуды
Если операция загрузки была завершена, когда приложение находилось в фоновом режиме, обратный вызов onSuccess вызывается, когда приложение становится активным.
Если операция загрузки была завершена при закрытии приложения, обратный вызов onSuccess вызывается сразу после первого вызова startAsync() для того же URI, как если бы файл был загружен немедленно.
Новая операция загрузки для того же URI возобновляет ожидающую загрузку вместо запуска новой. Если для указанного URI не обнаружено ожидающих загрузок, начинается новая загрузка, целевой файл будет автоматически перезаписан после завершения загрузки.
В Android временный файл загрузки создается во внешнем хранилище (ограничение DownloadManager), поэтому при отсутствии внешнего хранилища загрузка не удастся.