if not Self.IdFTP1.Connected then
begin
try
Self.IdFTP1.Host := ftpIp;
Self.IdFTP1.Username := ftpUser;
Self.IdFTP1.Password := ftpPwd;
Self.IdFTP1.TransferType := ftASCII;
Self.IdFTP1.Connect;
Self.IdFTP1.ChangeDir(ftpPath);
Self.SaveLog('成功连接FTP服务器: ' + ftpIp);
try
Self.IdFTP1.Get(strFileName, strDestFileName, True, False); ///偶尔会报错,不知道什么原因
except on Ex: Exception do
Self.SaveLog('下载文件失败: ' + Ex.Message);
end;
except on E: Exception do
begin
Self.IdFTP1.Abort;
Self.IdFTP1.Quit;
Self.IdFTP1.Disconnect;
end;
end;
end;
请高手指教?!
5 个解决方案
#1
这个感觉应该正常吧,你不能保证服务器随时都是OK的。 自己做好异常处理即可。
另外Indy抛异常是提示错误的方式,不用紧张哈。
另外Indy抛异常是提示错误的方式,不用紧张哈。
#2
这个估计跟FTP服务器端的设置有关。
#3
正常
#4
我在程序里做了个控制,每一次Connect后,要循环3次GET,如果3次都不成功,就不要了,断开连接。
有时候,第一次get报错(错误信息就是上面我所说的),第二次get就成功了,我想不通:为什么连接超时了,第二次get时,我也没有重新连接,为什么就会成功下载呢?
虽然程序做了控制,情况好多了,但我还是希望大家能多给我点指导。谢谢!
有时候,第一次get报错(错误信息就是上面我所说的),第二次get就成功了,我想不通:为什么连接超时了,第二次get时,我也没有重新连接,为什么就会成功下载呢?
虽然程序做了控制,情况好多了,但我还是希望大家能多给我点指导。谢谢!
#5
是不是FTP的用户数限制了.
#1
这个感觉应该正常吧,你不能保证服务器随时都是OK的。 自己做好异常处理即可。
另外Indy抛异常是提示错误的方式,不用紧张哈。
另外Indy抛异常是提示错误的方式,不用紧张哈。
#2
这个估计跟FTP服务器端的设置有关。
#3
正常
#4
我在程序里做了个控制,每一次Connect后,要循环3次GET,如果3次都不成功,就不要了,断开连接。
有时候,第一次get报错(错误信息就是上面我所说的),第二次get就成功了,我想不通:为什么连接超时了,第二次get时,我也没有重新连接,为什么就会成功下载呢?
虽然程序做了控制,情况好多了,但我还是希望大家能多给我点指导。谢谢!
有时候,第一次get报错(错误信息就是上面我所说的),第二次get就成功了,我想不通:为什么连接超时了,第二次get时,我也没有重新连接,为什么就会成功下载呢?
虽然程序做了控制,情况好多了,但我还是希望大家能多给我点指导。谢谢!
#5
是不是FTP的用户数限制了.