Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-12-2010
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 16
radge Va por buen camino
Descargar directorio desde un FTP (recursivamente)

Buenas , estoy buscando la forma de descargar-me un directorio entero de un FTP y recrear-lo en local. Tengo algo del tipo

/directorio/
/directorio/sub1/
/directorio/sub2/
/directorio/sub3/

Y hago algo como esto

Código:
   listaFTP:= TStringList.Create;
   ftpRepositori.ChangeDir('/directorio/');
   ftpRepositori.List(listaFTP,'',true);
   //envés de usar el '*.*' usamos '' y así nos 
  //devuelve los directorios que es lo que me interesa.
Pero una vez aquí no se como continuar.... la forma "larga" se me ocurre de comprobar si esta el directorio en local , sinó esta crearlo , recorrer el directorio fichero a fichero etc..etc...

He hecho un montón de busquedas a google con "delphi ftp download folder" , "delphi get directory from ftp" , ... y no encuentro nada y la verdad me extraña que nadie se haya encontrado con esto.

Por cierto yso Indy10 con delphi 7

gracias , radge
Responder Con Cita
  #2  
Antiguo 18-12-2010
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
esta funcion esta programada con apuro pero te puede servir de algo
llena un arbol con el ftp, lo puedes adaptar a en lugar de llenar el arbol debes hacer un get recursivo, para subir al ftp es put y get para bajar

Código Delphi [-]
procedure TForm1.LlenaArbolDirectorioFTP(NodoA:TTreeNode;r:string);
var i,j:integer; Nodo,Nodo1:TTreeNode; n:string; t,t1:tstrings;
begin
  Nodo :=  TTreeNode.Create(nil); t:=tstringlist.Create ;
  t1:=tstringlist.Create ;
  with idftp1   do
    begin
     if connected then
      begin
        //raiz
          ExtListDir (t,r);
          ChangeDir(r);


       for I := 0 to DirectoryListing.Count - 1 do
        begin
         if DirectoryListing.Items[i].ItemType = ditDirectory then
          begin
            n:= DirectoryListing.Items[i].FileName;
            nodo := ArbolFTP.Items.AddChild(NodoA,n);
            nodo.ImageIndex := 0;nodo.SelectedIndex := 0;nodo.StateIndex := 2;
            //se mete y sale en las carpetas a ver si estan llenas o vacias
          end;//if DirectoryListing

         if DirectoryListing.Items[i].ItemType  = ditFile then
          begin
            nodo := ArbolFTP.Items.AddChild(NodoA,DirectoryListing.Items[i].FileName );
            nodo.ImageIndex := 3; nodo.SelectedIndex := 3;nodo.StateIndex := 2;
          end;//if DirectoryListing
        end;//for I :=
      end; // if connected
    end; // with datamodule2
    t.Free;
    t1.free;
end;
Responder Con Cita
  #3  
Antiguo 21-12-2010
radge radge is offline
Miembro
 
Registrado: may 2008
Posts: 147
Poder: 16
radge Va por buen camino
Muchas gracias , pero al probar la función se me queja en la linia

if DirectoryListing.Items[i].ItemType = ditDirectory then <== me dice [Error] MAIN.pas(111): Undeclared identifier: 'ditDirectory'

Debo definir alguna unit puede ser ? Tal como dije uso Indy 10 con delphi 7

muchas gracias , radge

Última edición por radge fecha: 21-12-2010 a las 19:21:06.
Responder Con Cita
  #4  
Antiguo 30-12-2010
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
disculpa la demora en la unit idftplist,
cuando te pase eso vas al menu search del delphi y en find in files escoges un directorio y buscas con el texto y le pones dentro la funcion que no sabes a que unit pertenece, en este caso la busquedas la arías en el directorio del delphi que tengas porque las indy las trae delphi, buscas en el directorio bin, de la version de delphi que tengas, y vas mirando las declaraciones .

salud y pesetas
Responder Con Cita
  #5  
Antiguo 30-12-2010
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
de todas formas recuerda que la funcion trabaja con un componente de la paleta indy clients llamado tidftp que es el que debe usar todas las unit necesarias, y debes arrastrarlo a tu datamodule o a la form
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como buscar ficheros recursivamente kenychy C++ Builder 11 14-12-2010 17:47:12
Descargar imagenes desde una URL jamlaboira Internet 5 16-06-2008 13:33:22
descargar archivo desde php gulder PHP 2 07-06-2007 08:28:26
Rellenar treeview con un directorio recursivamente mierda Varios 2 13-04-2007 19:09:49
Descargar archivos de directorio protegido mediante apache chux PHP 0 25-09-2006 12:59:43


La franja horaria es GMT +2. Ahora son las 13:58:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi