indyftp下载文件有关问题
indyftp下载文件问题
========如果我在下载文件完成的时候需要做一次判断,那么在自己创建的实例里面该怎么加入下面这个onafterget过程。每个文件下载完成都要判断,是否完成,完成后实现onafterget过程,这个是indyftp自己的过程
procedure Tmainform.idftpAfterGet(ASender: TObject; VStream: TStream);
begin
end;
------解决思路----------------------
这个问题我也遇到了
我的解决办法如下:
1. con.List(ls); list这个函数放弃使用, 至于怎么获取文件列表就自己通过网络传输了
2. 注意下FFTP.Passive这个属性, 有的网络需要开启
function huoq(sip:string;sdate:string):string ;
var
con:TIdFTP;
name:string;
tt :TIdFTPListItems; //ftp列表
t : TIdFTPListItem; //ftp单条记录
j,f:Integer;
ls:TStringList ;
begin
f:=1;
tt:=nil;
con:=TIdFTP.Create(nil);
con.Host:='127.0.0.1' ;
con.Username:='dh';
con.Password:='dh';
con.Connect;
mainform.mmo1.lines.add('ftp success');
ls := TStringList.Create; //获取文件列表
con.ChangeDir(sip);
con.ChangeDir(sdate);
mainform.mmo1.lines.add('ftp success change dir');
mainform.mmo1.lines.add(con.RetrieveCurrentDir);
try
Application.ProcessMessages;
con.List(ls);-------------有时候经常卡住这句,但是有时候可以,也不抛出异常,就是无响应
f:=con.DirectoryListing.Count-1 ; //获取文件数量
mainform.mmo1.lines.add('num='+inttostr(f));
tt:=con.directorylisting;
except
on e: Exception do
Begin
mainform.mmo1.Lines.Add(PChar(E.Message));
log4error(PChar(E.Message)+'_下载失败');
//mmo1.Lines.Add(name+'_'+'下载失败');
End;
end;
========如果我在下载文件完成的时候需要做一次判断,那么在自己创建的实例里面该怎么加入下面这个onafterget过程。每个文件下载完成都要判断,是否完成,完成后实现onafterget过程,这个是indyftp自己的过程
procedure Tmainform.idftpAfterGet(ASender: TObject; VStream: TStream);
begin
end;
------解决思路----------------------
这个问题我也遇到了
我的解决办法如下:
1. con.List(ls); list这个函数放弃使用, 至于怎么获取文件列表就自己通过网络传输了
2. 注意下FFTP.Passive这个属性, 有的网络需要开启