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.