PDA

Ver la Versión Completa : Bajar fichero por ftp usando TIDFtp


chux
15-05-2006, 17:46:36
Buenas, necesito hacer una aplicacion que suba y baje fotos de una ftp, las tareas de uploads las realiza correctamente, pero no consigo bajar ficheros...

Estoy usando el procedimiento get de un idftp Esto es lo que llevo

var
fichero : Tidstream;
begin
fichero := tidstream.Create;
try
self.IdFTP1.Connect;
self.IdFTP1.ChangeDir('htdocs/images/ofertas/');
self.IdFTP1.Get(self.ZTable1.FieldByName('foto').asstring,fichero);
except
on e : exception do
showmessage('ERROR al cargar la imagen: ' + e.Message)
end;
end;


El error esta en la variable del tipo tidstream, ya que al llegar al get me dice que seek not implemented...

Bueno saludos y gracias

dec
15-05-2006, 19:26:55
Hola,

En la ayuda (para la versión 9, me parece) que dispongo de los componentes Indy (http://www.indyproject.org/) figura "TIdStream" como descenciente de "TStream", sin embargo, en la versión 10 de dichos componentes encuentro que "TIdStream" desciende directamente de "TObject" (esto me llamó la atención, nada más, no creo que tenga que ver con el problema que te encuentras, hasta que no se demuestre lo contrario).

Por otro lado, si piensas trabajar con archivos, por ejemplo, tal vez "TIdStream" no sea la opción más adecuada, echa un vistazo a la clase "TFileStream", inténtalo con ella, pues creo que sería la ideal para lo que necesitas.

Edito: He olvidado el propio método "Get" del componente "TIdFtp". Parece que tiene un método sobrecargado que puede utilizarse para descargar archivos sin necesidad de lidiar con "Streams" (ya lidiará el método internamente, supongo).

Podrías echar un vistazo en la ayuda sobre el método "Get", como digo, pues la tarea podría resumirse más o menos así:


Self.IdFTP1.Get(self.ZTable1.FieldByName('foto').asstring, 'C:\archivo.txt', true, true);

chux
16-05-2006, 09:16:13
Gracias por responder, he probado con esto

self.IdFTP1.Get(self.ZTable1.FieldByName('foto').asstring,extractfilepath(application.exename) + 'imgtmp.qry',true,true);

Pero me da una excepcion diciendome que el fichero ya existe, cuando el fichero no existe, y ademas overwrite esta a true...