如何在Delphi XE中通过FTP下载文件


本文整理自网络,侵删。

 
uses
 ... IdFTP, IdFTPCommon ...
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  IdFTP1.Host := 'test.rebex.net';
  IdFTP1.Port := 21;
  IdFTP1.ConnectTimeout := 5000;
  IdFTP1.Username := 'demo';
  IdFTP1.Password := 'password';
  IdFTP1.TransferType := IdFTPCommon.TIdFTPTransferType.ftBinary;
  IdFTP1.Passive := True;
 
  try
    IdFTP1.Connect;
    try
      IdFTP1.Get('/pub/example/pop3-browser.png', ExtractFilePath(ParamStr(0)) + 'pop3-browser.png', True, False);
    finally
      IdFTP1.Disconnect;
    end;
    ShowMessage('Downloaded!');
  except
    ShowMessage('Error while downloading!');
  end;
end;
如果FTP服务器仅允许匿名连接,请使用:

IdFTP1.Username:='匿名';
//IdFTP1.Password:='password';

使用TIdURI在Delphi XE中解析或拆分FTP URL
uses
 ... IdFTP, IdFTPCommon, IdURI ...
 
procedure TForm1.btnDownloadFileClick(Sender: TObject);
var
  URL: string;
  Uri: TIdURI;
begin
  URL := Trim(edURL.Text);
  Uri := TIdURI.Create(URL);
 
  try
    IdFTP1.Host := Uri.Host;
 
    if Uri.Port <> '' then
    IdFTP1.Port := StrToInt(Uri.Port) else
    IdFTP1.Port := 21;
 
    IdFTP1.ConnectTimeout := 5000;
 
    IdFTP1.Username := 'anonymous';
 
    if Uri.Username <> '' then
    begin
      IdFTP1.Username := Uri.Username;
      IdFTP1.Password := Uri.Password;
    end;
 
    IdFTP1.TransferType := IdFTPCommon.TIdFTPTransferType.ftBinary;
    IdFTP1.Passive := True;
 
    try
      IdFTP1.Connect;
      try
        IdFTP1.Get(Uri.Path + Uri.Document, ExtractFilePath(ParamStr(0)) + Uri.Document, True, False);
      finally
        IdFTP1.Disconnect;
      end;
      ShowMessage('Downloaded!');
    except
      ShowMessage('Error while downloading!');
    end;
  finally
    Uri.Free;
  end;
end;
适用于username:password和匿名FTP登录名:

ftp:// demo:password@test.rebex.net/pub/example/pop3-browser.png
ftp://speedtest.tele2.net/1MB.zip
有关TIdURI的更多详细信息,请参见:

http://www.e-iter.net/knowledge/indy9/007878.html

相关阅读 >>

Delphi kbmmw sampleservice/sampleclient方式传输数据集

Delphi 双进程监控保护

Delphi判断ie是否使用代理

Delphi 字符串中末位是双字节字符的处理(避免最后一位为乱码)

Delphi实现解析百度搜索结果link?url=

Delphi webservices传base64字串

扩展 Delphi 线程 使之传递参数.(给匿名线程增加参数)

Delphi 世界时间转换

Delphi system 提供的编译期函数

Delphi xe7上启用android蓝牙

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...