Einzelnen Beitrag anzeigen

livemedia

Registriert seit: 14. Mär 2006
8 Beiträge
 
Delphi 2009 Professional
 
#1

Download mit IdFtp.get erzeugt 5byte-Dateien

  Alt 1. Jun 2009, 01:16
Hallo

Ich Arbeite derzeit mit Delphi2009 und bringe ein altes Project von mir auf den aktuellsten Stand. Dabei lade ich von diversen FTP-Servern jeweils ein Verzeichnis herunter und lege die Dateien in einer Struktur auf der Festplatte zur weiteren Bearbeitung aus.

Das hat soweit auch immer gut geklappt. Nun hab ich schon mitgekommen das die Erkennung der Dateinamen nicht mehr so ist wie bei Delphi2007 - aber das hab ich hinbekommen. Mein Programm liest nun wieder korrekt die Dateien in dem ftp-Verzeichnis ein und zeigt in der Listbox die Namen und die Dateigröße korrekt an. Nach einer Prüfung ob die Datei schon auf der Platte ist startet der Download. Die erzeugten Dateien sind aber immer nur 5 Byre groß.

Ein normaler Zugriff mit beliebigen FTP-Programmen geht ohne Probleme.

Hier ein Auszug aus dem Script

Delphi-Quellcode:
 procedure TForm1.ButtonClick(Sender: TObject);
 var i : integer;
      count : integer;
      name : string;
      basedir : string; // Verzeichnis auf der Festplatte
      currentdir : string; // Ordner auf dem Server
      ftplist : TIdFtpListItems;
      ftpfile : TFileStream;

begin
 if IdFTP1.connected = false then
  begin
    IdFTP1.Username := 'xxxxxx';
    IdFTP1.Password := 'xxxxxx';
    IdFTP1.Host := '123.123.123.123';
    IdFTP1.Passive := TRUE;
    basedir := 'z:\projekt\eingang-xxx\';
    currentdir := 'subdir123';

    IdFTP1.Connect;
    IdFTP1.ChangeDir(currentdir);
    IdFTP1.List;
    ftplist := IdFTP1.DirectoryListing;

    count := ftplist.Count;
    for i := 1 to Count do
      begin
        name := ftplist[i-1].FileName;
        if ftplist[i-1].ItemType = ditFile then
        begin
           Listbox1.items.add(name+' ('+IntToStr(ftplist[i-1].Size)+')');
           if FileExists(basedir+currentdir+'\'+name) = FALSE then
              IdFTP1.Get(name,basedir+currentdir+'\'+name);

           // ALTERNATIV habe ich das auch schon versucht mit dem gleichen Ergebnis.

           // ftpfile := TFileStream.Create(basedir+currentdir+'\'+name, fmCreate);
           // try
           // IdFTP1.Get(name,ftpfile);
           // finally
           // FreeAndNil(ftpfile);
           // end;


        end;
      end;
 
    IdFTP1.Quit;
    iDFTP1.Disconnect;
  end;
end;
  Mit Zitat antworten Zitat