科技时代新浪首页 > 科技时代 > 软件 > 正文

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


http://www.sina.com.cn 2005年01月27日 10:16 天极yesky

  文/cokeyang

  (5)实现下载

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

  过程说明:

procedure Get(const ASourceFile: string; ADest: TStream; AResume: Boolean); overload;

procedure Get(const ASourceFile: string; const ADestFile: string; const ACanOverwrite: boolean; AResume: Boolean); overload;


  从远程服务器上获取文件。

  属性说明:

const ASourceFile: string


  远程服务器上的源文件名

const ADestFile: string


  保存到客户机上的文件名

const ACanOverwrite: boolean = false


  重写同名文件

AResume: Boolean = false


  是否进行断点续传

  示例代码:

SaveDialog1.FileName := Name;

if SaveDialog1.Execute then begin

SetFunctionButtons(false);

IdFTP1.TransferType := ftBinary;

BytesToTransfer := IdFTP1.Size(Name);



if FileExists(Name) then begin

case MessageDlg('File aready exists. Do you want to resume the download operation?',

mtConfirmation, mbYesNoCancel, 0) of

mrYes: begin

BytesToTransfer := BytesToTransfer - FileSizeByName(Name);

IdFTP1.Get(Name, SaveDialog1.FileName, false, true);

end;

mrNo: begin

IdFTP1.Get(Name, SaveDialog1.FileName, true);

end;

mrCancel: begin

exit;

end;

end;

end

else begin

IdFTP1.Get(Name, SaveDialog1.FileName, false);

end;


[上一页]  [1]  [2]  [3]  [4]  [5]  [6]  [下一页]


  点击此处查询全部FTP新闻

评论】【应用软件】【推荐】【 】【打印】【下载点点通】【关闭
 

 
新 闻 查 询
关键词



彩 信 专 题
新酷铃选
最新最HOT铃声推荐
棋魂
千年棋魂藤原佐为
请输入歌曲/歌手名:
更多专题   更多彩信
 
 



科技时代意见反馈留言板 电话:010-82628888-5828   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2005 SINA Inc. All Rights Reserved

版权所有 新浪网