Question

Yat-il un moyen facile et fiable pour confirmer qu'un téléchargement Web terminé avec succès à télécharger en utilisant Python ou WGET [pour les gros fichiers]? Je veux vous assurer que le fichier téléchargé dans son intégralité avant d'effectuer une autre action.

Était-ce utile?

La solution

Étant donné beaucoup (la plupart dans la pratique, je crois) HTTP / 1.1 sections d'en-tête, vous pouvez obtenir une attente à combien de temps le corps d'entité est. Si vous avez cette attente, vous pouvez décider si vous avez toutes les données d'entité. Voir section RFC 2616 4.4 pour plus de détails, mais essentiellement:

  • parfois le content-length reflète avec précision la longueur du corps de l'entité
  • parfois il n'y a pas de corps d'entité, selon le code de réponse ou si la réponse répond à une demande de HEAD
  • parfois la demande est codée transfert; et il y a un marqueur dans les données HTTP qui dit: « Je suis fait maintenant » (Transfer-Encoding: chunked)
  • et parfois, le message est fait officiellement lorsque les ferme de connexion (dans ce cas, vous ne pouvez pas obtenir la différence entre la chose et d'être coupé tôt)

Dans tous les cas, mais le dernier, vous pouvez dire si vous avez la chose ou non. Je ne sais pas si un outil en particulier (wget ou une bibliothèque Python existant) vous donne un signal facilement interprétable que votre réponse a été ou n'a pas été tronqué.

Autres conseils

HTTP ne fournit pas un moyen de vérifier cela.

La manière utilisée lors de la distribution de gros fichiers est, après le téléchargement, calculer la somme MD5 du fichier et de le comparer avec le md5sum fourni par le serveur.

Exemple, voilà comment ubuntu-t distribuer et vérifier leurs téléchargements de CD. https://help.ubuntu.com/community/HowToMD5SUM

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top