idftp的下载出错了这个问题老大了

sxper 2013-01-03 02:32:52
1 首先这个过程是在connected以后执行的
2 只下载不上传,网络环境是内网,绝对ok。
3 connected以后马上执行呢,没有问题。问题就是过一段时间后执行,且其中某个文件夹文件过多,有500+ 就在下载文件夹内容的时候。报错。

file sent ok //根本没上传。id怎么报错这个?
Connection Closed Gracefully 然后就是错误。

这个时候只要重新connect以后,还是可以执行下载。


procedure TForm1.tmr2Timer(Sender: TObject);//连接保持检测。10秒一次
begin
if not IdFTP.Connected then
begin

Exit;
end;
if TransferrignData then Exit;//在下载中则不noop
IdFTP.Noop;
end;





procedure Tform1.download ;
var
name:string;
tt :TIdFTPListItems; //ftp列表
t : TIdFTPListItem; //ftp单条记录
j: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);

except
mmo1.Lines.Add(ip.Text+'无此目录');
end;



idftp.List(ls);

IdFTP.TransferType := ftBinary;
tt:=IdFTP.directorylisting;
forcedirectories ('.\'+ip.text+'\'+ftp_date.Text);
for j :=2 to idftp.DirectoryListing.Count-1 do
begin
t:=tt.items[j];
if IdFTP.DirectoryListing.Items[j].ItemType = ditfile 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);

except

end;

end;


end;
mmo1.Lines.Add(ip.text+'_'+ftp_date.Text+'下载完毕');
mmo2.Lines.Add(ip.text+'_'+ftp_date.Text+'='+inttostr(idftp.DirectoryListing.Count-2)+'下载完毕');

idftp.ChangeDir('../');
idftp.ChangeDir('../');
idftp.ChangeDir('../');
end;
...全文
215 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxper 2013-01-06
  • 打赏
  • 举报
回复
这事很难么。indy难道 500多200k左右的文件都应付不来么 ?
山东蓝鸟贵薪 2013-01-04
  • 打赏
  • 举报
回复
建议你在网上找个实例看看吧、
sxper 2013-01-04
  • 打赏
  • 举报
回复
实例没错啊。 我这个本身也没有问题 就是出现偶发性错误,但是在文件多的时候比较常见

1,593

社区成员

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

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