PDA

Ver la Versión Completa : Coger ficheros desde ftp


Ubed
17-12-2007, 10:56:01
Hola, yo tengo un ftp del cual deseo coger unos ficheros.

Qerria saber que componente utilizar para poder coger ese fichero y como debo hacerlo.

He conseguido conectar con un componente llamado TFtpClient

Muchas gracias de antemano.

Tal
17-12-2007, 12:08:13
Buenas.

Yo uso un objeto de Indy el TIdFTP y sin tener mucha idea fui capaz de usarlo con lo cual a mi parecer es bastante sencillo.:p

Puedes configurar la ruta, el puerto, usuario, login e incluso directorio inicial por propiedades publicas del objeto así que las puedes poner predefinidas en el código fuente o de algún fichero(un .ini) o pedir al usuario en ese momento...

El obejto devuelve una lista por valor(var lista) y también puedes coger un fichero de esa lista.


//obtener la lista de ficheros en FTP
FTP.List(lista,'',false);
//grabar un fichero concreto en una ruta concreta
FTP.Get([nombre fichero en FTP a granar],[fichero en local a grabar],true,false);


El resto de varibles booleanas hechales un ojo en la rutina Get,no tiene mucho misterio.

Espero haberte ayudado, un saludo.

Ubed
17-12-2007, 17:08:15
si bastante, porque mi siguiente pregunta era como hacer una lista de los elementos de la carpeta, jejeje.

Ahora tengo otra pregunta, Como hago para que no aparezcan los permisos del fichero, bueno como obtengo solo el nombre del fichero.

Tal
17-12-2007, 17:17:52
Ese problema también lo tuve yo.
Yo creo que si pones
[DELPHI]
FTP.List(lista,'',false);
[/DEPLHI]

el false ese es para que no te liste los detalles.
Aún así yo gasto gasto esto:
En sysutils.pas hay una función "ExtractFileName" que te devuelve sólo el nombre del fichero pasando del resto de cosas que te devuelve ftp.list.
Eso es al menos lo que uso yo.

Ubed
17-12-2007, 18:15:49
COmo utilizas el ExtractFileName sobre la lista??

Tal
17-12-2007, 18:36:05
Con un bucle.

for i := 2 to lista.count-1 do
lista[n] := ExtractFileName(lista[n]);


el lista[0] es '.' y el lista[1] son los '..'
El '.' indica directorio actual y '..' para ir al directorio anterior que se usan
para navegar lo que pasa es que a la hora de coger nombres de archivos nos traen sin cuidado.

Y al final lo que tu quires es


FTP.List(lista,'',false);
for i := 2 to lista.count-1 do
lista[n] := ExtractFileName(lista[n]);


Y ya tienes la lista de tus ficheros listos para mostrar al usuario limpios.

NOTA: tal cual esta lista no te valdrá para abrir ficheros ya que no tendrás la extensión. Usa otra lista auxiliar para mostrar. Una para enseñar y otra para manejar. Consejo gratis.
PD2: Evidentemente haz FTP.get sobre la que manejas.

Ubed
18-12-2007, 12:48:31
Bien, ahora llega otra pregunta dificil, lo que quiero coger son archivos de PHP y kiero k me muestre el resultado en un memo o algo parecido, como deberia acerlo???

Tal
18-12-2007, 18:03:10
Tan sencillo como hacer

Memo.lines := lista;


Creo recordar que así funciona, sino


for i := 0 to lista.count-1
Memo.lines.add(lista[i]);


Donde lista es la lista de archivos ya bonitos para mostrar.