我在使用Delphi XE2中的TidFTP组件下载文件时遇到了问题。我可以连接到FTP站点,获取文件列表并执行get命令。然而,当我尝试使用get命令下载文件时,文件总是比源文件大。然后随后的文件就会损坏。
此外,如果我尝试下载多个文件,第一个文件会下载(大于源文件),其余文件将被跳过。没有从get命令抛出错误,它只是退出了。我尝试钩入TidFTP控件上的某些事件,例如AfterGet和OnStatus,但一切似乎正常。
我尝试使用第三方FTP客户端访问文件并下载它,以确保它不是我们FTP服务器的问题,该下载按预期工作。所以我想这可能与TidFTP控件有关,或者我做错了什么。
以下是我用来下载文件的例程:
此外,如果我尝试下载多个文件,第一个文件会下载(大于源文件),其余文件将被跳过。没有从get命令抛出错误,它只是退出了。我尝试钩入TidFTP控件上的某些事件,例如AfterGet和OnStatus,但一切似乎正常。
我尝试使用第三方FTP客户端访问文件并下载它,以确保它不是我们FTP服务器的问题,该下载按预期工作。所以我想这可能与TidFTP控件有关,或者我做错了什么。
以下是我用来下载文件的例程:
var
ftp: TIdFTP;
strDirectory: string;
begin
ftp := TIdFTP.Create(nil);
try
ftp.Host := 'ftp.myftpserver.com'
ftp.Passive := false;
ftp.Username := 'TestUser';
ftp.Password := 'TestPassword';
ftp.ConnectTimeout := 1000;
ftp.Connect();
ftp.BeginWork(wmRead);
ftp.ChangeDir('/TestArea/');
strDirectory := 'c:\test\';
if not DirectoryExists(strDirectory) then
CreateDir(strDirectory);
ftp.Get('Test.zip', strDirectory + '\' + 'Test.zip', true, false);
ftp.Disconnect();
except
on e: exception do
showMessage(e.message);
end;
end;