关于网友提出的“ ftp下载文件夹,怎么处理为好?”问题疑问,本网通过在网上对“ ftp下载文件夹,怎么处理为好?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: ftp下载文件夹,怎么处理为好?
描述: 用delphi写个ftp客户端,可以直接从ftp服务器下下载文件,对ftp服务器上的文件夹下载怎么处理,有没有代码参考?文件路径较深,谢谢!
解决方案1:procedure Tmainform.download ;
var
name:string;
tt :TIdFTPListItems; //ftp列表
t : TIdFTPListItem; //ftp单条记录
j,f:Integer;
ls:TStringList ;
begin
if idftp.Connected =False then btn1.Click;
//idftp.ChangeDir('/Ext');
ls := TStringList.Create;
try
idftp.ChangeDir('/Ext');
idftp.ChangeDir(ip.Text);
idftp.ChangeDir(ftp_date.Text);
edt1.Text := IdFTP.RetrieveCurrentDir;
idftp.List(ls); //这句很关键啊,一个晚上就是发现该语句必须放在进入目录之后的第一件事情。
f:=idftp.DirectoryListing.Count-1 ;
{
if Trim(ip.Text)='255.255.8.80' then
begin
ShowMessage(IntToStr(f));
end;
on e: Exception do
Begin
log4error(PChar(E.Message)+'_连接超时');
End;
}
except
on e: Exception do
begin
log4error(PChar(E.Message)+'_改变目录错误');
mmo1.Lines.Add(PChar(E.Message));
mmo1.Lines.Add(ip.Text+'_'+ftp_date.Text+'无数据');
fun_ftplog( ip.text,ftp_date.Text,'0');
Exit;//没有会出现list index out of bounds 错误
f:=0;
end;
end;
//IdFTP.TransferType := ftBinary;
tt:=IdFTP.directorylisting;
forcedirectories ('.\'+ip.text+'\'+ftp_date.Text);
for j :=0 to f do
begin
t:=tt.items[j];
if (IdFTP.DirectoryListing.Items[j].ItemType = ditfile) and (f>0) then //如果是文件
begin
if Length(t.FileName)<11 then name :='data.txt'
else name:=t.FileName;
try
IdFTP.Get(t.FileName ,ip.text+'\'+ftp_date.Text+'\'+name,True,False);
except
on e: Exception do
Begin
mmo1.Lines.Add(PChar(E.Message)+name);
log4error(PChar(E.Message)+'_下载失败');
mmo1.Lines.Add(name+'_'+'下载失败');
End;
end;
end;
//mmo1.Lines.Add(ip.text+'_'+ftp_date.Text+'下载完毕');
mmo2.Lines.Add(ip.text+'_'+ftp_date.Text+'='+inttostr(f)+'下载完毕');
fun_ftplog( ip.text,ftp_date.Text,inttostr(f));
idftp.ChangeDir('../');
idftp.ChangeDir('../');
idftp.ChangeDir('../');
end;
end;
以上介绍了“ ftp下载文件夹,怎么处理为好?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3641723.html