Indy FTP 递归下载目录及文件的问题!

lphy 2003-11-24 01:46:35

procedure TForm1.DownAll(localpath:string; serverpath: String);
var
i,count1:integer;
ss:string;
att:TIdDirItemType;
FileList : TStrings;
begin
try begin
FileList := TStringList.Create;
memoupload.Lines.add('Changedir'+serverpath);
IdFTP1.ChangeDir(serverpath);
if AnsiLastChar(serverpath) <> '/' then
serverpath := serverpath + '/';
if AnsiLastChar(localpath) <> '\' then
localpath := localpath + '\';
if not DirectoryExists(localpath) then CreateDir(localpath);
IdFTP1.List(FileList);
count1:=IdFTP1.DirectoryListing.Count;
for i:=0 to count1-1 do begin
ss:=IdFTP1.DirectoryListing.Items[i].FileName;
att:=IdFTP1.DirectoryListing.Items[i].ItemType;
if (att<>ditDirectory) and (ss <> '.') AND (ss <> '..') then begin
if not DirectoryExists(localpath) then CreateDir(localpath);
IdFTP1.Get(serverpath+ss,localpath+ss,true);
end
end;
for i:=0 to count1-1 do begin
ss:=IdFTP1.DirectoryListing.Items[i].FileName;
att:=IdFTP1.DirectoryListing.Items[i].ItemType;
if (att=ditDirectory) and (ss <> '.') AND (ss <> '..') then begin
DownAll(localpath+ss,serverpath+ss);
end;
end;
IdFTP1.ChangeDirUp;
Filelist.Free;
end
except
end;
end;

我根据网上的nmftp递归下载的程序改编的,但是只能下载一部分目录及文件,请各位大侠帮指明其中的错误


错误情况:
服务器目录
/abc/
/abc/01/
/abc/01/001/
/abc/01/001/123.htm
/abc/01/001/456.htm
/abc/01/001/789.htm
/abc/01/002/
/abc/01/002/111.htm
/abc/01/002/222.htm
/abc/01/002/333.htm
/abc/02/112.htm
/abc/02/113.htm

只能下载
/abc/
/abc/01/
/abc/01/001/
/abc/01/001/123.htm
/abc/01/001/456.htm
/abc/01/001/789.htm
其它目录就下不了
...全文
63 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
caoruomou 2003-12-18
  • 打赏
  • 举报
回复
可能是你登陆的id有限制
lphy 2003-11-25
  • 打赏
  • 举报
回复
顶---
nhdj 2003-11-25
  • 打赏
  • 举报
回复
你调试跟踪一下,看看程序在下载完第一个明细目录(在下在明细目录的代码设断点)程序的执行方向是否返回到了上一级,而且当第一个嵌套循环结束后是否返回到了上一个循环,设上断点跟踪很容易找出错误的
lphy 2003-11-24
  • 打赏
  • 举报
回复
顶--
saien 2003-11-24
  • 打赏
  • 举报
回复
lphy 2003-11-24
  • 打赏
  • 举报
回复
IdFTP1.ChangeDirUp
没问题能返回上级目录的
这个问题我已经搞了几天了,怎么搞也没搞出来,请那位高人指点一下
或者有类是的代码贴出来学习一下:)
nhdj 2003-11-24
  • 打赏
  • 举报
回复
没看出有什么毛病啊,可能是IdFTP1.ChangeDirUp;没有返回到上级目录,你可以调试一下看看
如果像你所说的,问题应该是比较明显,就是程序在下载完第一个明细目录无法返回上一个目录,你关键看看这一部分吧
flfljh 2003-11-24
  • 打赏
  • 举报
回复
我也只能顶了
lphy 2003-11-24
  • 打赏
  • 举报
回复

1,592

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧