Comment connaître la taille d'un fichier avant de le télécharger?
J'ai télécharger un fichier et je suis en utilisant ce code, qui est essentiellement un AsyncTask
, qui est destinée à mettre à jour une barre de progression. Mais, depuis, je ne sais pas quelle est la taille du fichier, j'ai eu à utiliser la touche de navigation de la barre de progression. Alors, comment puis-je obtenir la taille du fichier avant de commencer à le télécharger, de sorte que je peux utiliser une normale de la barre de progression?
- Notez que vous devez appeler
urlConnection.connect()
avant de tenter d'accéder à laContent-Length
en-tête. Ne pas le faire pourrait fonctionner, mais pas dans toutes les circonstances possibles. - Ne savais pas que... il a travaillé de cette façon pour moi, mais merci pour vos conseils. Je vais modifier la réponse.
Vous devez vous connecter pour publier un commentaire.
vous pouvez en obtenir un en-tête appelé
Content-Length
forme de la Réponse HTTP objet que vous obtenez, ce qui vous donnera la longueur du fichier.vous devriez noter cependant que certains serveurs ne pas renvoyer cette information, et la seule façon de connaître la taille réelle est de lire tout de la réponse.
Exemple:
vous pouvez généralement utiliser getContentLength , mais la meilleure chose est-il obtenir la longueur par vous-même (car il peut se passer integer valeur max) .
juste analyser le contenu de l'en-tête de longueur valeur par vous-même . mieux l'analyser en tant .
exemple:
ne remarque que je peux être n'importe quelle chaîne , afin de l'utiliser try catch , et si c'est -1, vide ou null , cela signifie que vous ne pouvez pas savoir la taille du fichier depuis le serveur ne le permet pas.
EDIT: Voici un autre code mis à jour, à l'aide de Kotlin: