[MFC, CHttpFile] GetLength() liefert manchmal falsche Werte

revelation

Mitglied
Hallo zusammen!

Ich habe mal wieder ein MFC-Problem.... ;)
Und zwar möchte ich eine Datei von einem HTTP-Server downloaden und den Fortschritt visualisieren. Dazu benötige ich allerdings die Größe der Datei. Ich habe folgendes versucht:
Code:
CInternetSession is;
CHttpConnection *hc = is.GetHttpConnection("www.irgendeinserver.de");
CHttpFile *hf = hc->OpenRequest("GET", "irgendeinedatei.zip");
	
hf->SendRequest()

DWORD len = hf->GetLength();
Das funktioniert aber nur dann, wenn ich die Datei schon einmal heruntergeladen habe, sie also im Cash liegt. Hat jemand eine Ahnung woran das liegt, oder habe ich einfach einen falschen Weg gewählt?

Danke für eure Hilfe
Johannes
 
Zuletzt bearbeitet:
Ich habe dazu ein bischen rumgesucht und inzwischen den Eindruck gewonnen, dass GetLength() nur die Anzahl bereits gelesener Bytes zurückgibt bzw. die Postion des Filepointers.
In der MSDN Lib steht zu CFile::GetLength(), das an CHttpFile vererbt wird: Obtains the current logical length of the file in bytes, not the amount.
Fühlt sich jetzt irgend jemand schlauer? Also, ich bin mir immer noch nicht sicher, ob ich es begriffen habe. ;)
 
Danke für deine Antwort!

Ich hatte mir schon so was gedacht, weil es ja erst geklappt hat, wenn die Datei bereits im Browser-Cache gespeichert war!

Hast du (oder irgendein anderer) vielleicht eine andere Idee? Mein Ziel ist, es den Dowloadvorgang durch eine ProgressBar zu visualisieren.

Gruß
Johannes
 
Hast du (oder irgendein anderer) vielleicht eine andere Idee? Mein Ziel ist, es den Dowloadvorgang durch eine ProgressBar zu visualisieren.
Ich habe leider keine Idee. Oder doch: Vielleicht könntest du stattdessen mit FTP arbeiten? Vielleicht bietet das diese Möglichkeit. (CFtpFileFind, CFtpConnection, usw.)
 
Ich glaube, ich habs:

Da ich sowiso immer nur daten von meinem eigenen Server herunterladen möchte (das modul ist für
Updates gedacht), erstelle ich mir einfach ein kleines php-Script, welches die Länge einer Datei, deren Name als Parameter übergeben worden ist, zurückgibt!

Das ist zwar unschön, sollte aber funktionieren!

Trotzdem nochmal vielen Dank für deine Bemühungen!

Gruß
Johannes
 
Zurück