网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
利用Indy的TIdFtp控件实现FTP协议
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
前操作的状态;在OnWork中实现传输中状态条和其他参数的显示;而在OnWorkBegin和OnWorkEnd中分别设定开始传输和传输结束时的界面。

(3)连接远程服务器

    完成了设定控件属性和实现了控件的事件响应后,就可以与服务器进行交互和传输了。在连接之前,应首先判断IdFtp是否处于连接状态,如果Connected为False,则通过界面控件或其他方式指定与服务器连接相关的一些TCP类属性的设置,分别是:Host(主机名):String、Username(用户名):String、Password(密码):String,也可以指定Port(端口)。之后调用Connect方法连接远程服务器,如果无异常出现则连接成功建立。

过程说明:procedure Connect(AAutoLogin: boolean; const ATimeout: Integer);

该过程连接远程FTP服务器

属性:AAutoLogin: boolean = True

连接后自动登录,该参数默认为True。

const ATimeout: Integer = IdTimeoutDefault

超时时间,单位:秒。

示例代码:

  if IdFTP1.Connected then try

    if TransferrignData then IdFTP1.Abort;

    IdFTP1.Quit;

  finally

  end

  else with IdFTP1 do try

    Username := UserIDEdit.Text;

    Password := PasswordEdit.Text;

    Host := FtpServerEdit.Text;

    Connect;

    ChangeDir(CurrentDirEdit.Text);

  finally

  end;

(4)改变目录

    连接建立后,可以改变当前FTP会话所在的目录。对于已知绝对路径的情况下,可以直接调用ChangeDir(const ADirName: string)方法来转换目录,ADirName表示服务器上的文件系统目录,另外还可以调用ChangeDirUp回到上级目录。

    如果未知路径,则可以通过List(ADest: TStrings; const ASpecifier: string; const ADetails: boolean)过程获取远程服务器的当前目录结构,此时必须设定TransferType为ftASCII(ASCII模式),其中:ADest保存当前目录结构,可以在后续程序中调用该列表。另外可以通过RetrieveCurrentDir方法获取当前目录名。

过程说明:

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)下载的实现

  

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号