Ver Mensaje Individual
  #1  
Antiguo 27-08-2008
klionsis klionsis is offline
Miembro
 
Registrado: may 2006
Posts: 50
Reputación: 19
klionsis Va por buen camino
IdFtp, problema con localización de archivo

Hola gente, necesito que me ayuden con un problema que tengo con idFtp. Lo único que quiero hacer es bajar un archivo desde un FTP pero no estoy pudiendo, les digo porque.

Antes que nada quiero deciles que he tomado como base para lo que quiero hacer lo que indica salvica en uno de los hilos donde el mismo cita un ejemplo de trucomania.

Si accedo por algún browser el archivo que quiero bajar se encuantra en una dirección como la siguiente: ftp.nombre.com/clientes/htm/, colocando esta URL, en el browser veo los archivos listados y basta con solo hacer click en uno para bajarlo.

El tema es que desde idFTP solo me puedo conectar si en la propiedad Host del componente le coloco ftp.nombre.com y no toda la ruta donde se encuentra el archivo, por lo cual al momente de verificar el tamaño del archivo en cuestión, no lo hace, si no que asigna -1 como tamaño del mismo. El archivo que quiero bajar es una tabla DBF. El código seria algo como esto:

Código Delphi [-]
Procedure TForm1.Button2Click(Sender: TObject); 
  
  Var 
  Tam,FHandle,BytesEnviados : integer; 
  
       Begin 
       IdFTP1.Username := 'usuario@usuario.com'; 
       IdFTP1.Password := 'password'; 
       IdFTP1.Host := 'ftp.nombre.com'; 
  
            Try 
            IdFTP1.Connect ; 
            Except 
  
            Showmessage ('El Archivo no fue recibido'); 
            End; 
  
  
       If IdFTP1.Connected then 
  
            Begin 
            IdFTP1.TransferType := ftBinary; 
            Tam := IdFTP1.Size('/clientes/htm/archivo.dbf'); 
            ProgressBar1.Min := 0; 
            ProgressBar1.Max := Tam; 
            IdFTP1.BeginWork(wmRead); 
  
                 Try 
                 IdFTP1.Get('/clientes/htm/archivo.dbf',  
                'Archivo.dbf',true); 
                 IdFTP1.EndWork(wmRead); 
                 IdFTP1.Disconnect; 
                 Finally 
                 FHandle := FileOpen('Archivo.txt', 0); 
                 BytesEnviados := Getfilesize(FHandle,nil); 
                 FileClose(FHandle); 
                  { 
                 El Tamaño del archivo recibido lo tengo que leer del disco 
                 porque si cuento los bytes que bajaron 
                me va a dar menos de los que leí en el servidor, supongo que 
                porque el componente comprime aun más que ZipMaster 
                  } 
                 If BytesEnviados < Tam then 
                 ShowMessage('El Archivo no pudo ser Recibido') 
                 Else 
                 ShowMessage 
                ('El Archivo fue Recibido corréctamente'); 
                 Close; 
                 End; 
  
            End; 
  
       End; 
  
  // evento onWork del ftp 
  
  Procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; 
  
  Const AWorkCount: Integer); 
  
       Begin 
       ProgressBar1.Position := AWorkCount 
       End;

Espero que me puedan ayudar, muchas gracias.
Responder Con Cita