Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Bajar fichero por ftp usando TIDFtp (https://www.clubdelphi.com/foros/showthread.php?t=31699)

chux 15-05-2006 17:46:36

Bajar fichero por ftp usando TIDFtp
 
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
Código Delphi [-]
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 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í:

Código Delphi [-]
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

Código Delphi [-]
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...


La franja horaria es GMT +2. Ahora son las 03:39:40.

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