Maison >interface Web >uni-app >Comment déterminer le téléchargement du fichier UNIAPP
Déterminer l'achèvement de téléchargement dans une application UNIAPP repose sur la mise à profit de l'API sous-jacente uni.downloadFile
et de ses événements associés. L'API uni.downloadFile
renvoie un objet de tâche de téléchargement, qui émet des événements pour indiquer le statut de progression et d'achèvement du téléchargement. Surtout, vous devez écouter l'événement success
de cet objet de tâche de téléchargement. Cet événement ne tire que lorsque le téléchargement est terminé avec succès et que le fichier est enregistré à l'emplacement temporaire spécifié. Le fait de ne pas gérer cet événement empêchera correctement votre application de savoir quand le téléchargement est vraiment terminé. Vous ne pouvez pas simplement vérifier l'existence du fichier après avoir lancé le téléchargement, car le fichier pourrait ne pas être écrit immédiatement après la fin du processus de téléchargement. Au lieu de cela, l'événement success
agit comme le signal définitif que le téléchargement est terminé et que le fichier est prêt à l'emploi. Le gestionnaire d'événements fournira des informations sur le fichier téléchargé, y compris son chemin temporaire.
Détection d'un téléchargement de fichier fini dans UNIAPP implique l'utilisation de l'API uni.downloadFile
et l'enregistrement d'un auditeur pour l'événement success
. Voici un exemple de code démontrant ceci:
<code class="javascript">uni.downloadFile({ url: 'your_download_url', filePath: uni.env.SDKVersion >= '3.0.0' ? uni.getFileSystemManager().env.USER_DATA_PATH : uni.env.USER_DATA_PATH, //Specify file path appropriately based on SDK version. For newer versions use getFileSystemManager().env.USER_DATA_PATH name: 'downloaded_file.zip', //Optional: give a name to your downloaded file. success: function (res) { // Download successfully completed console.log('Download finished:', res.tempFilePath); // res.tempFilePath is the temporary path of the downloaded file // Now you can process the downloaded file, e.g., move it to a permanent location, or extract it. // Example: Moving the file to a permanent location (requires additional permissions) uni.saveFile({ tempFilePath: res.tempFilePath, filePath: '/storage/emulated/0/Android/data/your_app_package_name/files/downloaded_file.zip', //Replace with your desired permanent file path success: (saveRes) => { console.log('File saved to permanent location:', saveRes.savedFilePath); }, fail: (err) => { console.error('Failed to save file:', err); } }); }, fail: function (err) { // Download failed console.error('Download failed:', err); } });</code>
N'oubliez pas de remplacer "your_download_url"
par l'URL réelle du fichier que vous souhaitez télécharger et ajuster les chemins de fichier en fonction des besoins de votre application et des autorisations Android. Une bonne gestion des erreurs dans le rappel fail
est cruciale pour un comportement d'application robuste. Remarquez également l'affectation de chemin conditionnel pour gérer différentes versions SDK UNIAPP.
L'événement et la méthode principaux utilisés pour gérer les téléchargements de fichiers réussis dans UNIAPP est l'événement success
émis par l'API uni.downloadFile
API. Cet événement fournit une propriété tempFilePath
contenant le chemin temporaire vers le fichier téléchargé. Les autres méthodes que vous pourriez utiliser en conjonction avec uni.downloadFile
incluent:
uni.saveFile
: Cette méthode est utilisée pour déplacer le fichier téléchargé de son emplacement temporaire à un emplacement plus permanent dans le stockage de votre application. Ceci est souvent nécessaire pour s'assurer que le fichier persiste après la fermeture de l'application. Notez que vous pourriez avoir besoin d'autorisations appropriées pour cette opération. uni.getFileSystemManager()
: Cela donne accès aux opérations du système de fichiers, vous permettant d'interagir avec le fichier téléchargé une fois qu'il a été enregistré (par exemple, lire son contenu, ou la supprimer). uni.request
: Bien que non impliquée dans le processus de téléchargement lui-même, uni.request
: progress
Implémentation d'un indicateur de progrès pour les téléchargements de fichiers nécessite l'écoute de l'événement uni.downloadFile
émis par le
<code class="javascript">uni.downloadFile({ url: 'your_download_url', filePath: uni.env.SDKVersion >= '3.0.0' ? uni.getFileSystemManager().env.USER_DATA_PATH : uni.env.USER_DATA_PATH, //Specify file path appropriately based on SDK version. For newer versions use getFileSystemManager().env.USER_DATA_PATH name: 'downloaded_file.zip', //Optional: give a name to your downloaded file. success: function (res) { // Download successfully completed console.log('Download finished:', res.tempFilePath); // res.tempFilePath is the temporary path of the downloaded file // Now you can process the downloaded file, e.g., move it to a permanent location, or extract it. // Example: Moving the file to a permanent location (requires additional permissions) uni.saveFile({ tempFilePath: res.tempFilePath, filePath: '/storage/emulated/0/Android/data/your_app_package_name/files/downloaded_file.zip', //Replace with your desired permanent file path success: (saveRes) => { console.log('File saved to permanent location:', saveRes.savedFilePath); }, fail: (err) => { console.error('Failed to save file:', err); } }); }, fail: function (err) { // Download failed console.error('Download failed:', err); } });</code>
Cet exemple met à jour le titre de la barre de navigation avec la progression du téléchargement. Vous remplaceriez cela par du code pour mettre à jour un composant de barre de progression dédié dans votre application UNIAPP à l'aide d'un framework comme Vue.js. N'oubliez pas de gérer les erreurs potentielles de manière appropriée et de nettoyer correctement les ressources lorsque le téléchargement est terminé ou annulé. Envisagez d'utiliser une solution de gestion de l'État (comme Vuex) pour gérer efficacement les progrès du téléchargement, en particulier si plusieurs téléchargements se produisent simultanément.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!