Frage

Gibt es eine einfache und zuverlässige Art und Weise, um zu bestätigen, dass ein Web-Download erfolgreich abgeschlossen mit Python oder WGET zum Download [für große Dateien]? Ich will sicher in seiner Gesamtheit die Datei heruntergeladen machen, bevor eine weitere Aktion durchgeführt wird.

War es hilfreich?

Lösung

Da viele (die meisten in der Praxis, glaube ich) HTTP / 1.1 Header-Abschnitte, können Sie eine Erwartung darüber, wie lange das Unternehmen Körper. Wenn Sie diese Erwartung haben, können Sie entscheiden, ob Sie alle Objektdaten einsehen. Siehe RFC 2616 Abschnitt 4.4 für weitere Informationen, aber im wesentlichen:

  • manchmal die content-length spiegelt genau die Länge des Entitätskörpers
  • manchmal kann es keine Entitätskörpers sein, auf dem Antwortcode abhängig oder wenn die Antwort auf eine Anfrage HEAD reagiert
  • manchmal die Anforderung Übertragung codiert; und es gibt einige Marker in der HTTP-Daten, die sagt: ‚Ich bin fertig jetzt‘ (Transfer-Encoding: chunked)
  • und manchmal wird die Nachricht offiziell gemacht, wenn die Verbindung geschlossen (in diesem Fall können Sie nicht zwischen die ganze Sache bekommen und früh abgeschnitten zu werden)

In allen Fällen aber die letzten, können Sie sagen, wenn Sie die ganze Sache oder nicht haben. Ich weiß nicht, ob jedes Werkzeug insbesondere (wget oder eine vorhandene Python-Bibliothek) gibt Ihnen ein leicht interpretierbares Signal, dass Ihre Antwort war oder nicht abgeschnitten.

Andere Tipps

HTTP bietet keine Möglichkeit, das zu überprüfen.

Die verwendete Art und Weise, wenn große Dateien zu verteilen ist, nach dem Download, die Berechnung der MD5-Summe der Datei und vergleicht ihn mit dem md5sum vom Server bereitgestellt wird.

Beispiel, das ist, wie ubuntu hat ihre CD-Downloads zu verteilen und zu überprüfen. https://help.ubuntu.com/community/HowToMD5SUM

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top