![]() |
Indy: Wo liegt die heruntergeladene Datei?
Hallo,
ich lade wie folgt eine Datei herunter:
Delphi-Quellcode:
IdHTTP1.Get('http://www.meineseite.de/datei.txt');
Nun möchte ich die Datei in ein bestimmtes Verzeichnis abspeichern, wie geht das? Vielen Dank! |
AW: Indy: Wo liegt die heruntergeladene Datei?
Du bekommst einen Stream (es gibt auch eine überladene Methode wo du den Stream und damit den Ablageort übergeben kannst).
Auf der Platte speichert Indy nichts von selber. |
AW: Indy: Wo liegt die heruntergeladene Datei?
Beispiel:
Delphi-Quellcode:
procedure TForm1.GetUrlToFile(AURL, AFile : String);
var Output : TMemoryStream; begin IdHTTP1.HTTPOptions:= [hoKeepOrigProtocol,hoForceEncodeParams]; //WICHTIG!!! Output := TMemoryStream.Create; try try IdHTTP1.Get(AURL, Output); IdHTTP1.Disconnect; except // irgendwas... end; Output.SaveToFile(AFile); finally Output.Free; end; end; //Aufruf-Beispiel: GetUrlToFile('http://wwwdyn.zdf.de/ext/weather/temp-brd-3.jpg','D:\temp-brd-2.jpg'); |
AW: Indy: Wo liegt die heruntergeladene Datei?
Cool, danke für die Hilfe.
Jetzt frage ich mich, wie schnell und stabil das ganze läuft? Die Datei bzw. das Foto muss beim Start der Anwendung bereits in eine Komponente geladen sein. Wird das in der Praxis gut funktionieren? |
AW: Indy: Wo liegt die heruntergeladene Datei?
Probieren geht über studieren. Allerdings solltest Du immer vom worst case ausgehen, wenn Du Bezahlsoftware entwickelst. Der worst case geht in diesem speziellen Fall davon aus, daß die Verbindung extrem langsam ist, wenn es überhaupt zu einer Verbindung kommt.
Sherlock |
AW: Indy: Wo liegt die heruntergeladene Datei?
Was heißt das jetzt rein technisch? Die Anwendung warten lassen bis die Datei bereit steht?
|
AW: Indy: Wo liegt die heruntergeladene Datei?
Ich würde ein Standardbild hinterlegen, so unter dem Motto <nicht gefunden>, wenn die Datei erfolgreich runtergeladen wurde, dann das Standardbild ersetzen.
|
AW: Indy: Wo liegt die heruntergeladene Datei?
Die .txt-Datei ist mir wichtiger, und wenn sie nicht geladen ist, ist mein Programm nutzlos... hm... oder ich mache es so, dass die alte geladen wird, bis die neue ankommt, und tausche die danach aus.
|
AW: Indy: Wo liegt die heruntergeladene Datei?
Rein technisch benötigt man einen Thread, der die Informationen im Hintergrund beschafft und sobald diese da sind, werden diese synchronisiert angezeigt.
Das wäre die saberste Lösung (wo keiner warten muss und die UI nicht blockiert wird), die allerdings auch am aufwändigsten ist. |
AW: Indy: Wo liegt die heruntergeladene Datei?
Ok... verstehe. Indys bringen eine Komponente mit, die die Anwendung nicht "einfrieren" lässt. Erübrigt sich damit ein Thread? Ich meine natürlich ist ein Thread geschickter, aber vllt kann ich dieses vermeiden. Und wie schon erwähnt habe, lade ich erst die vorletzte Datei, bis die neue da ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 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