Dlaczego pliki są czasami innego rozmiaru lub uszkodzone po przesłaniu przez FTP?

Mam problem z pobraniem pliku przy użyciu składnika TidFTP w Delphi XE2. Jestem w stanie uzyskać połączenie z witryną FTP, uzyskać listę plików i wykonać polecenie get. Jednak gdy próbuję pobrać plik za pomocą polecenia get, plik zawsze pobiera większy rozmiar niż plik źródłowy. Następnie kolejny plik jest uszkodzony.

Ponadto, jeśli próbuję pobrać wiele plików, pierwszy plik pobierany (większy niż źródło) i pozostałe pliki są pomijane. Komenda get nie generuje żadnego błędu, tylko kończy działanie. Próbowałem podłączyć niektóre zdarzenia w kontrolce TidFTP, takie jak AfterGet i OnStatus, ale wszystko wydaje się normalne.

Próbowałem użyć klienta FTP innej firmy, aby uzyskać dostęp do pliku i pobrać go tylko po to, aby upewnić się, że nie jest to problem z naszym serwerem FTP i że pobieranie działa zgodnie z oczekiwaniami. Myślę więc, że może to być związane z kontrolą TidFTP lub może robię coś niepoprawnie.

Oto procedura, której używam do pobrania pliku:

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;

questionAnswers(1)

yourAnswerToTheQuestion