Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 10 Datei-Download Datum beibehalten (https://www.delphipraxis.net/150603-indy-10-datei-download-datum-beibehalten.html)

copris 21. Apr 2010 17:39


Indy 10 Datei-Download Datum beibehalten
 
:gruebel: Hallo zusammen

Gibt es eine Einstellung, mit der das Datei-Datum beim Download beibehalten wird, oder muss ich das nachträglich wieder über die Attribute ändern. Die Datei wird nur gedownloadet, wenn das Datum dem Jahr und Monat entspricht, das der Benutzer vorher ausgewählt hat.

Der Download ist gekürzt so
Delphi-Quellcode:
   
..
  i := 3600000; // 1 Stunde
  IdFTP.ConnectTimeout := i;
  IdFTP.ReadTimeout    := i;
  IdFTP.TransferTimeout := i;
  IdFTP.Connect();
..
IdFTP.List(lbList.Items, FTPString, false);
..
  lblTotal.Caption := inttostr(IdFTP.ListResult.Count-1) + ' Dateien eingelesen';
  for i := IdFTP.ListResult.Count-1 downto 0 do
    begin
      dat := IdFTP.FileDate(IDFTP.ListResult[i], true);
      if ( meYear.Text + format('%.02d', [m]) ) =
         ( inttostr(yearOf(dat)) + format('%.02d', [monthOf(dat)]) ) then
        begin
          if LocpathZ.Text = '' then zvz := LocPath.Text
                                else zvz := LocPath.Text +'\'+ inttostr(yearOf(dat))
                                     +'\'+  format('%.02d', [monthOf(dat)]);
          ForceDirectories(zvz +'\'+ FTPPath.Text);
          IdFTP.Get('/'+IDFTP.ListResult[i], zvz+'/'+IDFTP.ListResult[i], true, true);
          end;
      lblCount.Caption := inttostr(i)+' Dateien , '+IDFTP.ListResult[i] +' '+ datetostr(dat);
      lbList.Items.Delete(i);
      end;
IdFTP.Disconnect();
end;
..
Zusätzlich werden alle Dateien auf dem FTP-Server gelöscht, die älter als 2 Monate sind und auf dem Ziel bereits vorhanden sind.
Da auf dem FTP-Server ca. 10'000 XML-Dateien (1-5 kB) abgerufen werden, dauert das mitunter sehr lange.
2'300 Dateien, gesamt 4MB dauert etwa 35 Minuten. Gibt es da eine bessere Lösung?

2. Das mit dem Passiv-Mode ist mir nicht ganz klar. Wann ist dieser zu bevorzugen?

3. Gibt es eine Möglichkeit das IdFTP.List beim Einlesen nach Datum zu filtern?


Also schon mal besten Dank für eure Antworten.

haentschman 21. Apr 2010 18:52

Re: Indy 10 Datei-Download Datum beibehalten
 
Hallo...

Zitat:

Gibt es da eine bessere Lösung?
Wenn du dir eine XML mit den MD5 Hashes der Dateien auf dem Server anlegst, diese downloadest, die Unterschiede mit den vorhandenen abgleichst, die unterschiedlichen in eine "Downloadliste" packst und dann diese abholst.

...so als Idee :zwinker:

edit:
Zitat:

Die Datei wird nur gedownloadet, wenn das Datum dem Jahr und Monat entspricht, das der Benutzer vorher ausgewählt hat.
...hatte ich übersehen, daß das Datum vom Benutzer gewählt wird. Vieleicht kannst du dir eine "Dateiliste mit den Tagen" downloaden und die entsprechend filtern und downloaden

copris 22. Apr 2010 06:50

Re: Indy 10 Datei-Download Datum beibehalten
 
Besten Dank vorerst für die Antwort. Nur weiterhelfen tut mir das wenig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.

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