Ver Mensaje Individual
  #1  
Antiguo 22-06-2017
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Reputación: 17
jhonalone Va por buen camino
[SOLUCIONADO] Bajar/Subir Ficheros desde/a mi web por FTP

Hola de nuevo, amigos del foro.
El problema que me ocupa ahora es el título del hilo. Bueno, los archivos serían fundamentalmente de TEXTO.
Como siempre, antes de pedir vuestra ayuda, llevo varios días buscando en la red.
He encontrado varias referencias, entre ellas una de Neftalí (como no).
Pero no me funcionaron ninguna.

Mi servidor es https. Al intentar las soluciones por TidHTTP no funcionaron. La solución de Neftalí a este problema no supe resolverla.

Prefiero hacerlo por FTP .

He visto varias soluciones con este método, pero (ni replicando el código) he conseguido ni siquiera conectar con mi web.

De todos los ejemplos que he encontrado, me ha parecido el más completo este:

Código Delphi [-]
procedure TForm4.Button1Click(Sender: TObject);
var

filename : String;
Thread : TThread;
idFTP1 : TidFTP;
FS : TMemoryStream;
sPath :String;

begin
   FileName := '/Imagen.jpg';
FileName := '/ImgMaps/2YUxJ.jpg';
Thread := TThread.CreateAnonymousThread(
  procedure
  begin
    IdFTP1.Host := 'xxx.xxx.xxx';
    IdFTP1.Username := 'xxxxxx';
    IdFTP1.Password := 'xxxxx';
    IdFTP1.Passive := True;
    IdFTP1.ConnectTimeout := 60000;
    Fs := TMemoryStream.Create;
    try
      IdFTP1.Connect;
      try
        IdFTP1.TransferType := fsBinary;
        IdFTP1.Get(FileName, FS);
      finally
        IdFTP1.Disconnect;
      end;
      FS.Position := 0;
      TThread.Synchronize(nil,
        procedure
        begin
          Image1.Bitmap.LoadFromStream(FS);
        end
      );
    finally
      Fs.Free;
    end;
  end
);
Thread.OnTerminate := ThreadTerminated;
Thread.Start;
end;

procedure TForm4.ThreadTerminated(Sender: TObject);
begin
  if TThread(Sender).FatalException <> nil then begin
    ShowMessage('Failed')
  end else begin
    ShowMessage('Success');
  end;
end;

Como digo, he intentado replicarlo, CON UNA IMAGEN, aunque esto no es lo que pretendo. Sólo para comprobar si funcionaba, pero no me ha funcionado. Me da el mensaje "Failed".

Buscando errores, y sabiendo que mi web no permite ftp "anónimo" (Lo he comprobado en CuteFTP 9) he intentado probar quitando el TThread y me provoca un "Access Violation" al asignar los valores de acceso al FTP, cuando no están dentro del Thread.
Código Delphi [-]
 IdFTP1.Host := 'xxx.xxx.xxx'; // Lógicamente no es xxx.xxx.xxx sino los valores verdaderos. PROVOCA EL ERROR


Bueno. no quiero aburrir más.
Agradecería información sobre el tema. Está claro que nunca hice nada parecido (y, conociendo mis posibilidades y mi suerte, probablemente no lo haré nunca).

Sigo buscando....

Saludos cordiales.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)

Última edición por jhonalone fecha: 22-06-2017 a las 21:01:00.
Responder Con Cita