L'API fournit une fonctionnalité avancée de téléchargement de fichiers qui persiste au-delà de la fin de l'application, s'exécute en arrière-plan et continue même lorsque l'utilisateur a fermé/suspendu l'application. Le plugin comprend des mises à jour de progression et est principalement conçu pour les opérations de transfert à long terme de ressources telles que la vidéo, la musique et les grandes images.
Exemple d'utilisation
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); }); });
Stockage interne ou externe (carte SD) sur Android
Stockage externe
résoudre le répertoire cordova.file.externalDataDirectory
au moment de l'exécution
window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
Notez que cet appareil peut être sans stockage externe. Dans ce cas, cordova.file.externalDataDirectory
sera null
et doit donc être vérifié avant utilisation.
Stockage interne
résoudre le répertoire cordova.file.dataDirectory
au moment de l'exécution
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dirEntry) { dirEntry.getFile(fileName, { create: true }, function (targetFile) { ... }) }, function(error) {...})
Lisez les bizarreries du plugin de fichiers pour plus de détails :
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
Plateformes prises en charge
Windows8
Windows Phone8
iOS 7.0 ou version ultérieure
Androïde
bizarreries
Si une opération de téléchargement a été terminée lorsque l'application était en arrière-plan, le rappel onSuccess est appelé lorsque l'application devient active.
Si une opération de téléchargement a été terminée lors de la fermeture de l'application, le rappel onSuccess est appelé juste après que le premier startAsync() soit appelé pour le même uri, comme si le fichier avait été téléchargé immédiatement.
Une nouvelle opération de téléchargement pour le même uri reprend un téléchargement en attente au lieu d'en déclencher un nouveau. Si aucun téléchargement en attente n'est trouvé pour l'URI spécifié, un nouveau téléchargement est démarré, le fichier cible sera automatiquement écrasé une fois le téléchargement terminé.
Sur Android, le fichier de téléchargement temporaire est créé sur un stockage externe (limitation de DownloadManager), donc s'il n'y a pas de stockage externe, le téléchargement échouera.