我使用 Delphi 11.2和Clever Internet Suite 10.2。
我有一个程序,复制2个不同的FTP服务器上的一些文件。
然而,当我试图列出文件从ftp文件夹,一个是功能和其他没有。
第一个FTP使用相同的代码,第二个FTP给予“450文件不可用”。
使用的代码。
clFtpMain: TclFtp;
clFtpMain.Server := 'storage.rcs-rds.ro';
clFtpMain.Port := 21;
clFtpMain.Username := 'username';
clFtpMain.Password := 'pass';
clFtpMain.PassiveMode := True;
clFtpMain.Timeout := 10000;
clFtpMain.UseTLS := ctNone;
clFTPMain.Open;
clFTPMain.ChangeCurrentDir('/folder');
clFTPMain.DirectoryListing('*'); // <-- error here
有什么建议吗?
2条答案
按热度按时间piwo6bdm1#
有些FTP服务器很聪明,当没有可用的列表时会发送一个450回复,这样就不必浪费资源创建一个不发送任何东西的数据通道。
而有些FTP服务器总是打开数据连接来发送列表,甚至是空列表。
无论哪种方式,客户端都需要处理这两种情况,但听起来您正在使用的客户端没有将450情况视为非错误。这可能是该组件中的错误。请与其作者联系以获得修复,或使用没有该错误的其他客户端。
vdgimpew2#
我找到的解决方案是不要在DirectoryListing函数上放置任何过滤器。
显然,输入任何参数都会导致异常。
如果不输入param,列表就可以了,并带来文件(如果存在)。