Home » Tipps & Tricks » Netzwerk/Internet » Internet » Dateien über das HTTP-Protokoll herunterladen

Dateien über das HTTP-Protokoll herunterladen

Um eine Datei über das HTTP-Protokoll herunterzuladen kann man auf mehrere Möglichkeiten zurückgreifen.Allgemein sind die Indy-Komponenten für Netzwerk- und Internetaufgaben sehr zu empfehlen. Sie lassen sich kostenlos unter www.indyproject.org herunterladen (siehe Verweise) und sind ab Delphi 4 lauffähig. Die Vorgängerversion der Indy-Komponenten, WinShoes, stehen dort ebenfalls zum Download und lassen sich auch mit Delphi 3 betreiben.Demos, die zeigen, wie die Komponenten funktionieren, liegen den Archiven bei.Um eine HTML-Seite herunterzuladen reicht es, die Methode ‚Get‘ der TidHTTP-Komponente (liegt den Indies bei) aufzurufen:

 Memo1.Text:=idHTTP1.Get('http://www.delphi-treff.de');

Dateien können Sie folgendermaßen herunterladen:

var
  lStream: TFileStream;
begin
  lStream:=TFileStream.Create('C:Test.dat', fmCreate or fmShareDenyWrite);
  try
     FHttp.Get('http://www.delphi-treff.de/index .htm',lStream);
  finally
    lStream.Free;
  end;
end;

Hier wird eine Datei heruntergeladen und als ‚C:Test.dat‘ auf der Festplatte gespeichert.Alternativ kann man sich auch die Unit URLMon von Windows zu nutze machen:

uses
  URLMon;

procedure TForm1.Button1Click(Sender: TObject);
var
  Datei,Ziel:PChar;
begin
  Label1.Caption := 'Download gestartet';
  try
    Datei := 'http://www.DieSeite/DieDatei.zip';
    Ziel := 'C:WindowsDesktopDieDatei.zip';
    UrlDownloadToFile(nil, Datei, Ziel, 0, nil);
    Label1.Caption := 'Download beendet';
  except
    showmessage('Download abgebrochen');
  end;
end;

Hinweis: Achten Sie bei der Angabe von Internet-Adressen auf die Groß/Kleinschreibung, da die Server dies unterschiedlich handhaben.Die Methode funktioniert aber nur unter den einfachsten Bedingungen. Mit Weiterleitungen, Passwortschutz und Proxies kommt diese Lösung nicht zurecht. Greifen Sie in diesem Falle auf die o.g. Indy-Lösung zurück, die dafür entsprechende Properties zur Verfügung stellt:HandleRedirects muss auf True gestellt werden, falls Weiterleitungen automatisch verfolgt werden sollen. Das Property ProxyParams kümmert sich um mögliche Proxy-Einstellungen.