Dateigröße via HTTP ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Hallo,
ich muß vor dem Downloaden per Urllib die Größe der Datei ermitteln.
Mit os.stat(url) und os.path.getsize(url) gehts nicht. Hat einer von euch eine Idee?

Grüße, Seven
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Code: Alles auswählen

u = urllib.urlopen(uri)
info = u.info()
contentType = info.get('Content-Length')
...
Zuletzt geändert von veers am Mittwoch 21. November 2007, 16:39, insgesamt 1-mal geändert.
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Statt `Content-Type` ist es eher `Content-Length`, was die Größe der Datei enthält.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Sollte, man darf sich aber nicht darauf verlassen.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Leonidas hat geschrieben:Statt `Content-Type` ist es eher `Content-Length`, was die Größe der Datei enthält.
Argh, es wird wohl schon langsam spät für mich :)
Y0Gi hat geschrieben:Sollte, man darf sich aber nicht darauf verlassen.
Definitiv. Aber es ist das Einzige was man vor dem Download hat :)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Perfekt! Ich danke euch.
Seven
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Y0Gi hat geschrieben:Sollte, man darf sich aber nicht darauf verlassen.
könntest du das etwas ausführen?
Warum kann man sich nicht darauf verlassen? ("Chunked" mal aussen vor)
Der einzige fall, den ich mir vorstellen könnte, wäre, dass der server die Verbindung vor der gelesenen bytezahl abbricht, weil er eine kürzere datei sendet als angegeben.
Ist sie länger, wäre das doch ungültig (filecontent wär dort, wo die header des nächsten request sein sollten), oder irre ich da?
BlackJack

Wer zwingt den Client die korrekte Zahl dort anzugeben? Insbesondere wenn es eine Beschränkung gibt, die jemand gerne umgehen möchte, könnte er absichtlich einen kleineren, noch erlaubten Wert senden und dann trotzdem mehr Daten hinterher schieben.

Ob nach der Datei die nächste Anfrage kommt, hängt davon ab, ob Client und Server überhaupt ausgehandelt haben, dass über eine Verbindung mehrere Anfragen gestellt werden können. Das muss man ja nicht machen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Wer zwingt den Client die korrekte Zahl dort anzugeben? Insbesondere wenn es eine Beschränkung gibt, die jemand gerne umgehen möchte, könnte er absichtlich einen kleineren, noch erlaubten Wert senden und dann trotzdem mehr Daten hinterher schieben.
Hier geht es aber um Server, die in der Regel richtige Werte ausgeben oder eben gar keine (alte Server tun das gerne und Streaming-Server sowieso).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Ich wollte's nur gesagt haben. Es kommt ja auch auf den Verwendungszweck an. Nur wenn der Server einen riesengroßen oder negativen Wert oder Null angibt und dann das Schreiben der empfangenen Daten fehlschlägt, dann sage bitte keiner, er wäre nicht gewarnt worden.

Buffer Overflows fangen auch so an.
Antworten