利用Indy的TIdFtp控件实现FTP协议

http://tech.ddvip.com   2006年07月31日    社区交流

本文详细介绍利用Indy的TIdFtp控件实现FTP协议

  过程说明:

  procedure ChangeDir(const ADirName: string);

  改变工作目录

  属性

  const ADirName: string

  远程服务器的目录描述

  说明:该过程实际上是实现了FTP CWD命令。

  procedure ChangeDirUp;

  到上一级目录

  function RetrieveCurrentDir: string;

  该函数返回当前目录名

  procedure List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean);

  列出当前目录所有文件和子目录及其属性

  参数:

  ADest: TStrings

  保存文件及子目录的返回结果

  const ASpecifier: string = ''

  文件掩码,用于列出符合条件的文件

  const ADetails: boolean = true

  包含文件和子目录属性

  property DirectoryListing: TIdFTPListItems;

  返回文件及目录结构的列表

  示例代码:

  LS := TStringList.Create;
try
IdFTP1.ChangeDir(DirName);
IdFTP1.TransferType := ftASCII;
CurrentDirEdit.Text := IdFTP1.RetrieveCurrentDir;
DirectoryListBox.Items.Clear;
IdFTP1.List(LS);
DirectoryListBox.Items.Assign(LS);
if DirectoryListBox.Items.Count > 0 then
if AnsiPos('total', DirectoryListBox.Items[0]) > 0 then DirectoryListBox.Items.Delete(0);
finally
LS.Free;
end;

  (5)实现下载

  在下载之前,必须查看DirectoryListing.Items[sCurrFile].ItemType是否为文件,如返回为ditDirectory则代表当前文件名为目录,不能下载,必须导向到文件才可。如为文件,则可以进行下载。在下载前,设定传输的类型为二进制文件,并且指定本地要保存的路径。通过调用Get方法,实现文件的下载。下载过程较慢,可以考虑将其放到线程中实现。

作者:cokeyang    责编:豆豆技术应用

正在加载评论...