Dateidownload: Anzeigen der Dateigröße
-
Hallo
Ich habe folgende Funktion zum downloaden von Dateien aus dem Internet bei codeguru gefunden:
CString GetFile(const char *url, const char *filename) { #define HTTPBUFLEN 512 // Size of HTTP Buffer... char httpbuff[HTTPBUFLEN]; TCHAR szCause[255]; CString Cause; Cause.Format("YES"); TRY { CInternetSession mysession; CStdioFile *remotefile = mysession.OpenURL(url,1,INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD); CFile myfile(filename, CFile::modeCreate|CFile::modeWrite|CFile::typeBinary); int numbytes; while (numbytes = remotefile->Read(httpbuff, HTTPBUFLEN)) myfile.Write(httpbuff, numbytes); } CATCH_ALL(error) { error->GetErrorMessage(szCause,254,NULL); Cause.Format("%s",szCause); } END_CATCH_ALL; return (Cause); }
Nun möchte ich eine Statusanzeige anzeigen lassen, dazu brauche ich die Dateigröße und die aktuell runtergeladenen Daten.
Die Daten die bereits runtergeladen wurden bekomme ich ganz einfach mittels CFile::GetLength().
Bei der Quelldatei kommt bei GetLength aber immer nur 8192 zurück, keine Ahnung warum, aber scheinen genau 8kB zu sein. Weiß jemand wie ich die Größe der Quelldatei am Webserver ermitteln kann ?
Vielen Dank im Voraus.
-
Du musst eine eigene Klasse von CInternetSession ableiten und dann die "OnStatusCallback" überschreiben und diese mit "EnableStatusCallback" aktivieren.