Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Subir archivo a internet con componente IdHTTP1 (https://www.clubdelphi.com/foros/showthread.php?t=65917)

marilinspi 21-01-2010 21:02:34

Subir archivo a internet con componente IdHTTP1
 
hola a todos necesitaria saber como hacer para subir un archivoa internet con el componente IdHTTP1.

para conectarme hice lo siguiente
Código:

  IdHTTP1.Host :='Host';
  IdHTTP1.Port := 21;
  IdHTTP1.ReadTimeout := 5000;
  IdHTTP1.Request.Username := 'Nombre usuario';
  IdHTTP1.Request.Password := 'contraseña';
  try
    IdHTTP1.Connect;
  except
    ShowMessage('No se conecto');
  end;

y por lo que parece se conecta...pero ahora no se como hacer para subir. Les agradeceria si me dan una mano... Desde ya muchas gracias.

cocute 21-01-2010 23:05:09

para subir ficheros necesitas mejor el idFTP no el IdHTTP,

Aqui tienes un ejemplo,
pon en el form un idFTP, dos botones y un OpenDialog1.

Yo lo he probado y funciona, estaría mejor con una barra de progreso y hacer comprobaciones y demás, pero funcionar funciona.

Código Delphi [-]

procedure TForm1.btnConnectClick(Sender: TObject);
begin
idFTP1.Host := 'HOST';
idFTP1.Port := 21;
idFTP1.Username := 'USER';
idFTP1.Password := 'PASSWORD';
idFTP1.Connect;
ShowMessage('Conectado con el servidor.');
end;

procedure TForm1.btnUploadClick(Sender: TObject);
begin
 if idFTP1.Connected then
  begin
   if OpenDialog1.Execute then
    begin
      idFTP1.Put(OpenDialog1.FileName, ExtractFileName(OpenDialog1.FileName));
      idFTP1.Disconnect;
      ShowMessage('Fichero subido.');
    end;
  end;
end;

cocute 21-01-2010 23:43:06

aqui te subo un ejemplo con barra de progreso e info de conexión:

http://www.terawiki.clubdelphi.com/a...HostPorFTP.zip

marilinspi 22-01-2010 12:29:38

error 'Illegal PORT command'
 
hola muchas gracias por tu pronta respuesta. Hago todo como me decis, se conecta bien, pero cuando llega a linea de subir el archivo me da este error 'Illegal PORT command'. y no tengo idea de que puede ser... desde ya muchas gracias.

marilinspi 22-01-2010 14:12:55

Solucionado
 
al componente idftp1 en su propiedad Passive ponerla a TRUE. Gracias

marilinspi 22-01-2010 15:03:43

hola, ya he logrado subir todos mis archivos a internet son como 30... recorri mi carpeta 'prueba' y fui subiendo de a uno, mediante
Código:

var
  sr: TSearchRec;
  Directorio:String;
begin
  Directorio:='C:\prueba\';
  if idFTP1.Connected then
  begin
    if FindFirst(Directorio + '*', faAnyFile, sr) = 0 then
      repeat
        if (sr.Attr and faDirectory = 0) or (sr.Name <> '.')and (sr.Name <> '..') then
          idFTP1.Put(Directorio + sr.Name, 'public_html/Descargas/pruebas/'+ sr.Name); 
      until FindNext(sr) <> 0;
    FindClose(sr);
    idFTP1.Disconnect;
    ShowMessage('Fichero subido.');
  end;
end;

ahora lo que necesito es bajar todos esos archivos...y lo que no se es como recorrer el directorio en la web para ir bajando de a uno. Gracias desde ya.

marilinspi 27-01-2010 21:05:33

hola a todos, me surgio una duda que tengo que poner en idFTP1.Port:=? porque yo tenia 21 porque en un ejemplo estaba asi... pero en realidad que deberia poner? Gracias desde ya.

cocute 28-01-2010 01:27:40

Cita:

Empezado por marilinspi (Mensaje 352046)
hola a todos, me surgio una duda que tengo que poner en idFTP1.Port:=? porque yo tenia 21 porque en un ejemplo estaba asi... pero en realidad que deberia poner? Gracias desde ya.

para subir ficheros por FTP siempre se suele usar el puerto 21, vamos es el puerto por defecto, asi que dejalo ese mismo.

razadi 17-03-2010 19:35:45

Hola que tal, pero si en verdad se necesita enviar por el componente IDHTTP comos e haría???

esto por los permisos de los usuarios que no les liberan el puerto de FTP pero si tiene Internet y por ahí como podríamos mandar los archivos????

roman 17-03-2010 20:27:05

En este hilo puedes ver un par de ejemplos para subir archivos usando HTTP, uno usando Indy y el otro usando WinInet.

Pero el punto es que necesitas tener en el servidor un script que procese los datos POST que le mandas. Dicho script puedes hacerlo con PHP o algún otro lenguaje.

// Saludos

razadi 17-03-2010 20:54:56

Gracias Roman, creo que lo me falta es el script que procese el archivo que estoy subiendo, en fin lo voy a hacer.

Nuevamente gracias y saludos


La franja horaria es GMT +2. Ahora son las 15:14:46.

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