Por que os arquivos às vezes têm tamanho diferente ou são corrompidos após a transferência pelo FTP?
Estou tendo problemas para baixar um arquivo usando o componente TidFTP no Delphi XE2. Eu sou capaz de obter uma conexão com o site FTP, obter uma lista de arquivos e executar o comando get. No entanto, quando tento fazer o download de um arquivo usando o comando get, o arquivo sempre faz o download maior que o arquivo de origem. Então o arquivo subseqüente está corrompido.
Além disso, se eu tentar baixar vários arquivos, os primeiros downloads de arquivos (maiores que a fonte) e os arquivos restantes serão ignorados. Nenhum erro é lançado a partir do comando get, apenas sai. Eu tentei ligar em alguns dos eventos no controle TidFTP como AfterGet e OnStatus, mas tudo parece normal.
Eu tentei usar um cliente FTP de terceiros para acessar o arquivo e baixá-lo apenas para se certificar de que não foi um problema com o nosso servidor FTP e que o download funcionou como esperado. Então, eu estou pensando que isso pode estar relacionado ao controle do TidFTP ou talvez eu esteja fazendo algo incorretamente.
Aqui está a rotina que estou usando para baixar o arquivo:
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;