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.