Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Dateigröße einer auf einem Server liegenden Datei ermitteln (https://www.delphipraxis.net/33365-dateigroesse-einer-auf-einem-server-liegenden-datei-ermitteln.html)

Wheelie 5. Nov 2004 17:43


Dateigröße einer auf einem Server liegenden Datei ermitteln
 
Hi!

Siehe Topic! Wie kann man das am besten realisieren :?:

Danke ;)

runningsoft 5. Nov 2004 18:47

Re: Dateigröße einer auf einem Server liegenden Datei ermitt
 
Hi Wheelie,

such mal nach dem Begriff "FileSize" in der Hilfe Deines Delphi.

Steffen

Wheelie 5. Nov 2004 19:26

Re: Dateigröße einer auf einem Server liegenden Datei ermitt
 
Hallo Steffen,

danke für deine Antwort. In der Hilfe bin ich allerdings auf folgendes gestoßen:

In Delphi können Sie mit FileSize die Größe der angegebenen Datei (F) ermitteln. Die Größe wird als die Anzahl der Datensätze in einer Datensatzdatei ausgedrückt.

Ich habe auch irgendwo hier in der DP gelesen, dass FileSize nur auf lokale Dateien anwendbar ist.

Mein eigentliches Problem:

Ich möchte eine Datei von einem Server mit Statusanzeige runterladen. Habe natürlich auch gleich an die IdHTTP-Komponente von Indy gedacht, allerdings ist die Datei auf dem Server passwortgeschützt und IdHTTP meldet bei Get('') immer einen Login-Fehler und teilt mir mit, dass ich nicht berechtigt bin, diese Datei runterzuladen.

Pfad der Datei:

http://user:password@admin.domain.de/cgi-bin/datei.rar

Wie kann ich diese Datei mittels der IdHTTP-Komponente herunterladen?

Wheelie 6. Nov 2004 21:22

Re: Dateigröße von Datei auf Server ermitteln
 
kommt schon, einer weiß es doch bestimmt. hab nicht den blassesten schimmer wie ich die dateigröße ermitteln kann. bezüglich dem login-fehler in meinem vorherigen beitrag habe ich (auch hier in der dp) gelesen, dass der server die basic authentification nicht unterstützt.

die folgende funktion benutze ich, um eine datei herunterzuladen:
Delphi-Quellcode:
function GetFileFromInet(const fileURL, AFileNameToSave: String): Boolean;
Const
  BufferSize = 1024;
Var
  sAppName: String;
  hSession, hURL: hInternet;
  buffer: Array[1..BufferSize] Of Byte;
  bufferLen: DWord;
  mem: TMemoryStream;
Begin
  Result := False;
  sAppName := ExtractFileName(Application.ExeName);
  hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, Nil, Nil, 0);
  If ( hSession <> Nil ) Then
  Begin
    Try
      hURL := InternetOpenURL(hSession, PChar(fileURL), Nil, 0, INTERNET_FLAG_RELOAD, 0);
      If ( hURL <> Nil ) Then
      Begin
        Try
          mem := TMemoryStream.Create;
          Repeat                           // siehe unten
            BufferLen := 0;
            InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
            mem.Write(buffer, bufferlen);
          Until bufferLen = 0;
          mem.SaveToFile(AFileNameToSave);
          mem.Free;
          Result := True;
        Finally
          InternetCloseHandle(hURL);
        End;
      End;
    Finally
      InternetCloseHandle(hSession);
    End;
  End;
End;
in der gekennzeichneten schleife möchte ich den aktuellen fortschritt berechnen und dazu benötige ich eben die dateigröße der datei auf dem server.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz