Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy: Wo liegt die heruntergeladene Datei? (https://www.delphipraxis.net/189103-indy-wo-liegt-die-heruntergeladene-datei.html)

AlexII 3. Mai 2016 20:12


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!

Sir Rufo 3. Mai 2016 20:27

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.

t.roller 3. Mai 2016 20:46

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');

AlexII 4. Mai 2016 08:23

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?

Sherlock 4. Mai 2016 08:28

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

AlexII 4. Mai 2016 08:40

AW: Indy: Wo liegt die heruntergeladene Datei?
 
Was heißt das jetzt rein technisch? Die Anwendung warten lassen bis die Datei bereit steht?

baumina 4. Mai 2016 08:41

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.

AlexII 4. Mai 2016 08:50

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.

Sir Rufo 4. Mai 2016 08:53

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.

AlexII 4. Mai 2016 08:57

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 14:16 Uhr.
Seite 1 von 2  1 2      

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