使用Delphi IdFTP下载FTP文件

时间:2017-01-03 08:10:34

标签: ftp delphi-xe

我是delphi的新手,我需要编写一个ftp客户端程序,它将通过一个包含ftp地址列表的文本文件,并从ftp站点下载子文件夹。 我已成功连接到服务器,但卡在下载部分。有人可以帮助我在下载程序中插入代码

 procedure TCleint.btnConnectClick(Sender: TObject);
begin
    try
       if not IdFTP.Connected then
       begin
           IdFTP.Host := 'ftp server';
           IdFTP.Username := 'anonymous';
           IdFTP.Password := 'emailaddress';
           IdFTP.Port := 21;
           IdFTP.Connect;

           IdFTP.List(listaDirectory.Items, '', false);

           btnConnect.Enabled := False;
           btnDisconnect.Enabled := True;
           btnDownload.Enabled := True;

       end;
    except
         on E:Exception do
         begin
             MessageDlg('connection error!', mtError, [mbOK], 0);
             btnConnect.Enabled := true;
             btnDisconnect.Enabled := false;
             btnDownload.Enabled := false;
         end;
    end;
end;

procedure TCleint.btnDisconnectClick(Sender: TObject);
begin
    try
       if IdFTP.Connected then
       begin
           IdFTP.Disconnect;

           listaDirectory.Clear;
           btnConnect.Enabled := True;
           btnDisconnect.Enabled := False;
           btnDownload.Enabled := False;
       end;
    except
        on E:Exception do
        begin
          MessageDlg('connection error!', mtError, [mbOK], 0);
          btnConnect.Enabled := false;
          btnDisconnect.Enabled := true;
          btnDownload.Enabled := true;
        end;
    end;
end;

procedure TCleint.btnDownloadClick(Sender: TObject);
begin

end;

end.

1 个答案:

答案 0 :(得分:0)

调用List()后,您需要遍历DirectoryListing属性的条目。这将告诉您哪些项目是文件,哪些是子文件夹。然后,您可以Get()文件和(递归)ChangeDir() / List()子文件夹。