Dateien über das HTTP-Protokoll herunterladen |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
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.