idftp如何进入ftp服务器里的一个子目录里下载文件啊 ChangeDir函数不行啊

解决方案 »

  1.   

      IdFTP1.Username := 'user';
      IdFTP1.Password := 'pwd';
      IdFTP1.Connect('122.113.5.23', 21);
      if IdFTP1.Connected then
        Memo1.Lines.Add('Connected')
      else
        Exit;
      IdFTP1.ChangeDir('/home/ck_sjcl');
      //得到文件目录列表, 解析出文件名和属性, 再用Get方法递归下载
      IdFTP1.List(Memo2.Lines);
      

  2.   

    IdFTP1.Host := 'HOST IP ADDRESS';
    IdFTP1.UserName := 'USERNAME';
    IdFTP1.PassWord := 'PASSWORD';
    try
    IdFTP1.Login(True, -1);
    except on E:Exception do
    ShowMessage(E.Message);
    end;try
    IdFTP1.ChangeDir('DirName\');
    IdFTP1.Get('FileName in FTP Server', 'FileName in Local Machine', True, False);
    finally
    IdFTP1.Disconnect;
    end; 
      

  3.   

    procedure FTP_DownloadDir(var idFTP : TIdFtp;RemoteDir,LocalDir : string);label Files ;var
      i,DirCount : integer;
    begin
      if not DirectoryExists(LocalDir + RemoteDir) then
        ForceDirectories(LocalDir + RemoteDir);  
    idFTP.ChangeDir(RemoteDir);
      idFTP.List(nil);
      DirCount := idFTP.DirectoryListing.Count ;
      if DirCount = 0 then
      begin
        idFTP.ChangeDirUp;
        idFTP.List(nil);
      end;
      for i := 0 to DirCount - 1 do
      begin
        if DirCount <> idFTP.DirectoryListing.Count then
        begin
          repeat
            idFTP.ChangeDirUp;
            idFTP.List(nil);
          until DirCount = idFTP.DirectoryListing.Count ;
        end;
        if idFTP.DirectoryListing[i].ItemType = ditDirectory then
          FTP_DownloadDir(idFTP,idFTP.DirectoryListing[i].FileName,LocalDir + RemoteDir + '\')
        else begin
          idFTP.Get(idFTP.DirectoryListing[i].FileName,LocalDir + RemoteDir + '\' +
            idFTP.DirectoryListing[i].FileName,true);
          Form1.lb_num.Caption := IntToStr(StrToInt(Form1.lb_num.Caption) + 1);
          Form1.lb_num.Update;
          if i = DirCount - 1 then
          begin
            idFTP.ChangeDirUp;
            idFTP.List(nil);
          end;
        end;
      end;
    end;