![]() |
Zu Downloadene Dateigröße herausbekommen
Wie kann ich die Dateigröße einer zu downloadenen Datei herausbekommen?
|
Re: Zu Downloadene Dateigröße herausbekommen
Wie downloadest du die Datei denn ?
Per HTTP, dann gibt es im Header Content-Length. |
Re: Zu Downloadene Dateigröße herausbekommen
Hi!
ich benutze z.Zt. folgende Funktionen: Beim HTTP-Download:
Delphi-Quellcode:
uses WinINet;
var URL: HInternet; function GetHTTPFileSize(hInet:HINTERNET):cardinal; var dwindex,dwcodelen :dword; dwcode:array[1..20] of char; Begin dwIndex := 0; dwCodeLen := 10; HttpQueryInfo(hInet, HTTP_QUERY_CONTENT_LENGTH, @dwcode, dwcodeLen, dwIndex); Result := cardinal(strtoint(PCHAR(@dwcode))); end; URL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0); SizeOfFile:= GetHTTPFileSize(URL); Beim Download per FTP:
Delphi-Quellcode:
Grußvar sRec: TWin32FindData; if FtpFindFirstFile(fFTP, PChar(ftpFile), sRec, 0, 0) <> nil then begin fileSize := sRec.nFileSizeLow;astWriteTime; end else begin ShowMessage(Format('Datei nicht vorhanden',[ftpFile])); end; Pfoto |
Re: Zu Downloadene Dateigröße herausbekommen
ICh benutzte TIdHTTP ;)
Delphi-Quellcode:
Das "Url" in der PChar-Methode ist ein String oder :P
URL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
[edit] Also ich habe jetzt folgenden Code:
Delphi-Quellcode:
Und dieser gibt bei manchen Seiten (z.B.
procedure TForm1.Button1Click(Sender: TObject);
var URL: HInternet; err : string; function GetHTTPFileSize(hInet:HINTERNET):cardinal; var dwindex,dwcodelen :dword; dwcode:array[1..20] of char; Begin dwIndex := 0; dwCodeLen := 10; HttpQueryInfo(hInet, HTTP_QUERY_CONTENT_LENGTH, @dwcode, dwcodeLen, dwIndex); Result := cardinal(strtoint(PCHAR(@dwcode))); end; begin lSize.Caption := 'Size: Loading...'; lSize.Repaint; try lSize.Caption := 'Size: ' + IntToStr(GetHTTPFileSize(InternetOpenURL(InternetOpen('InetURL:/1.0',INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0), PChar(Edit1.Text), nil, 0, 0, 0))) + ' B'; except err := SysErrorMessage(GetLastError); if err <> '' then err := ' (' + err + ')'; lSize.Caption := 'Size: Error' + err; end; end; ![]() Zitat:
Bei anderen Seiten (z.B. ![]() [/edit] |
Re: Zu Downloadene Dateigröße herausbekommen
Gibt es keine Erklärung für dieses Phänomen?
|
Re: Zu Downloadene Dateigröße herausbekommen
Returncode von HttpQueryInfo muss abgefragt werden.
|
Re: Zu Downloadene Dateigröße herausbekommen
Moin Fabian,
ich schlage vor, dass Du erst einmal den Code aufräumst. So etwas:
Delphi-Quellcode:
geht ja schon mal gar nicht ;-)
GetHTTPFileSize(InternetOpenURL(InternetOpen(...
Die Handles müssen schliesslich wieder geschlossen werden. Ausserdem kannst Du dann auch prüfen, ob Du die Funktionen überhaupt erfolgreich aufgerufen werden konnten. |
Re: Zu Downloadene Dateigröße herausbekommen
Zitat:
Also ich habe auch noch das gefunden: ![]() Aber er kennt nicht "GetInternetFileSize" ... Oder gehört das zu IdHttp? |
Re: Zu Downloadene Dateigröße herausbekommen
Moin Fabian,
HTTPQueryInfo gibt true zurück wenn der Aufruf erfolgreich war. War er es nicht kannst Du Dir mit GetLastError zurückgeben lassen, warum nicht. |
Re: Zu Downloadene Dateigröße herausbekommen
Zitat:
Also okay ^^ Ich werds wieder aufsplitten, aber daran wirds nicht liegen... Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz