¿Por qué a veces los archivos tienen un tamaño diferente o están dañados después de transferirlos por FTP?

Tengo problemas para descargar un archivo con el componente TidFTP en Delphi XE2. Puedo obtener una conexión con el sitio FTP, obtener una lista de archivos y ejecutar el comando get. Sin embargo, cuando intento descargar un archivo con el comando obtener, el archivo siempre se descarga más grande que el archivo de origen. Entonces el archivo subsiguiente está corrupto.

Además, si intento descargar varios archivos, se descargan los primeros archivos (más grandes que la fuente) y los archivos restantes. No se lanza ningún error desde el comando de obtención, simplemente se cierra. Intenté conectar algunos de los eventos en el control TidFTP como AfterGet y OnStatus pero todo parece normal.

Intenté usar un cliente FTP de terceros para acceder al archivo y descargarlo solo para asegurarme de que no era un problema con nuestro servidor FTP y que la descarga funcionó como se esperaba. Así que estoy pensando que podría estar relacionado con el control TidFTP o tal vez estoy haciendo algo incorrectamente.

Aquí está la rutina que estoy usando para descargar el archivo:

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;

Respuestas a la pregunta(1)

Su respuesta a la pregunta