Delphi XE2 で TidFTP コンポーネントを使用してファイルをダウンロードする際に問題が発生しました。FTP サイトへの接続を取得し、ファイルのリストを取得して、get コマンドを実行できます。ただし、get コマンドを使用してファイルをダウンロードしようとすると、ファイルは常にソース ファイルよりも大きくダウンロードされます。その後、後続のファイルが破損しています。
さらに、複数のファイルをダウンロードしようとすると、最初のファイル (ソースよりも大きいファイル) がダウンロードされ、残りのファイルはスキップされます。get コマンドからエラーはスローされず、終了するだけです。AfterGet や OnStatus などの TidFTP コントロールのいくつかのイベントにフックしようとしましたが、すべて正常に表示されます。
サードパーティの 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;