Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-11-2011
maycampana maycampana is offline
Miembro
 
Registrado: ago 2010
Posts: 61
Poder: 14
maycampana Va por buen camino
Question Guardar un archivo en sitio web

Hola a todos!, tengo una aplicación creada con Delphi6 y base de datos Paradox7 que genera el backup correspondiente en .zip, necesito hacer que también se guarde una copia en un sitio web. Estoy viendo los componentes Indy pero no se cual corresponde elegir, MUCHAS GRACIAS al que me pueda orientar, estoy aprendiendo muchos de uds. Saludos
Responder Con Cita
  #2  
Antiguo 29-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo habitual puede ser usar un servidor FTP para alojarlos, así que supongo que tendrás que usar un cliente ftp, creo que TidFTP, si mal no recuerdo.
Haz una búsqueda por clubdelphi, es un tema tratado en diversas ocasiones.
Responder Con Cita
  #3  
Antiguo 29-11-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Lo suyo (y creo que los más sencillo) es usar los de FTP.
¿Tienes o puedes montar un acceso FTP en el servidor?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 29-11-2011
maycampana maycampana is offline
Miembro
 
Registrado: ago 2010
Posts: 61
Poder: 14
maycampana Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Lo habitual puede ser usar un servidor FTP para alojarlos, así que supongo que tendrás que usar un cliente ftp, creo que TidFTP, si mal no recuerdo.
Haz una búsqueda por clubdelphi, es un tema tratado en diversas ocasiones.
Gracias por su ayuda, voy a ver que puedo hacer y a investigar sobre ese componente, estoy aprendiendo, cuando lo logre les cuento, mil gracias.
Responder Con Cita
  #5  
Antiguo 29-11-2011
maycampana maycampana is offline
Miembro
 
Registrado: ago 2010
Posts: 61
Poder: 14
maycampana Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Lo suyo (y creo que los más sencillo) es usar los de FTP.
¿Tienes o puedes montar un acceso FTP en el servidor?
Gracias Neftali por contestar, tenemos un servidor con el que trabajamos y en el que me dan un sitio para que se guarden automáticamente los backups que los usuarios hacen desde una opción en el programa. No se que componentes usar, solo con IdFTP?, y con qué comando envio un archivo .zip o .rar a ese sitio? Millón de gracias.
Responder Con Cita
  #6  
Antiguo 30-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Hola.

Aquí tienes un ejemplo de envío de un fichero a un servidor ftp usando el componente idFTP:

Código Delphi [-]
         IdFTP1.Host:= NombreDelHost;
         IdFTP1.UserName := NombreUsuario;
         IdFTP1.Password := Password;
         Try
           IdFTP1.Connect;
         except
           ShowMessage('¡ATENCION! Problema de conexion, fichero no enviado');
           Exit;
         end;
         IDFTP1.TransferType:=ftBinary;
         IDFTP1.ChangeDir('CarpetaDestino'); // Ruta fichero destino
         Try
           IDFTP1.Put('C:\RutaOrigen\NombreArchivoOrigen','NombreArchivoDestino');
         except
           ShowMessage('ATENCION! Problema al enviar el archivo');
         end;

Espero que te sirva.
Saludos
__________________
Be water my friend.
Responder Con Cita
  #7  
Antiguo 30-11-2011
maycampana maycampana is offline
Miembro
 
Registrado: ago 2010
Posts: 61
Poder: 14
maycampana Va por buen camino
Mil gracias, ya lo voy a probar y despúes les cuento. Gracias por la ayuda que dan.
Responder Con Cita
  #8  
Antiguo 23-08-2012
maycampana maycampana is offline
Miembro
 
Registrado: ago 2010
Posts: 61
Poder: 14
maycampana Va por buen camino
Subir el backup al servidor

Hola newtron, funcionó perfectamente el código que me ofreciste, luego le agreguè una ProgressBar que me hizo renegar bastante pero logré que funcione. Ahora necesito poner en la línea del IdFTP1.Put( ) una ruta que no sea fija, debería utilizar ExtractFilePath o algo así ? Además el nombre del archivo también debería extraerlo porque en la aplicación el usuario puede guardar su backup con el nombre que quiera .zip . Bueno muchas gracias, me ayudan un montón con su sabiduría.
Responder Con Cita
  #9  
Antiguo 23-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por maycampana Ver Mensaje
Ahora necesito poner en la línea del IdFTP1.Put( ) una ruta que no sea fija, debería utilizar ExtractFilePath o algo así ? Además el nombre del archivo también debería extraerlo porque en la aplicación el usuario puede guardar su backup con el nombre que quiera
Hola maycampana.

Las funciones ExtractFilePath y ExtractFileName no te van a funcionar para extraer la ruta y el nombre de archivo en casos como: ''http://terawiki.clubdelphi.com/Delphi/Ejemplos/Archivo.zip", pero se puede hacer unas funciones que lo hagan.

Por ejemplo:
Código Delphi [-]
function ExtractFtpPath(const aName: string): string;
var
  i,u: Integer;
begin
  if aName > '' then
  begin
    u := 0;
    for i := 1 to Length(aName) do
      if aName[i] = '/' then u := i;
    Result:= Copy(aName, 1, u);
  end;
end;

function ExtractFtpFileName(const aName: string): string;
var
  i: Integer;
begin
  if aName > '' then
  begin
    i := Length(aName);
    while ((aName[i] <> '/') and (i > 0)) do Dec(i);
    Result := Copy(aName, i+1, MaxInt);
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 23-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Para no dejar a medias la idea y tomando el código que te puso el amigo newtron, podrías hacer algo como:
Código Delphi [-]
function ExtractFtpPath(const aName: string): string;
var
  i,u: Integer;
begin
  if aName > '' then
  begin
    u := 0;
    for i := 1 to Length(aName) do
      if aName[i] = '/' then u := i;
    Result:= Copy(aName, 1, u);
  end;
end;

function ExtractFtpFileName(const aName: string): string;
var
  i: Integer;
begin
  if aName > '' then
  begin
    i := Length(aName);
    while ((aName[i] <> '/') and (i > 0)) do Dec(i);
    Result := Copy(aName, i+1, MaxInt);
  end;
end;

procedure TForm1.SendFileToFTP(const HostName, UserName, Password,
  Origen, Destino: string);
begin
  IdFTP1.Host     := HostName;
  IdFTP1.UserName := UserName;
  IdFTP1.Password := Password;
  try
    IdFTP1.Connect;
  except
    MessageBox(Handle,'Error al tratar de conectarse','',MB_ICONERROR + MB_OK);
    Exit;
  end;
  IDFTP1.TransferType := ftBinary;
  IDFTP1.ChangeDir(ExtractFtpPath(Destino));
  try
    IDFTP1.Put(ExtractFilePath(Origen), ExtractFtpFileName(Destino));
  except
      MessageBox(Handle,'Error al enviar el archivo','',MB_ICONERROR + MB_OK);
  end;
end;

Llamada de ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  SendFileToFTP('HostName', 'JuanPerez', '1234', EditOrigen.Text, EditDestino.Text);
end;

Saludos.

Edito
: Tendrás que hacerle las pruebas definitivas sobre el servidor, sólo controlé el resultado de las cadenas.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 23-08-2012 a las 17:39:23.
Responder Con Cita
  #11  
Antiguo 24-08-2012
maycampana maycampana is offline
Miembro
 
Registrado: ago 2010
Posts: 61
Poder: 14
maycampana Va por buen camino
Enviar backup al servidor

Hola chicos, muchas gracias por la ayuda, voy a ver como aprovecho lo que me ofrecen, soy principiante y tal vez pretendo hacer cosas complicadas. Les comento, la aplicación tiene la opción de hacer el respaldo cada día que se guarda en gral. adentro de la carpeta del programa en el C:\ pero por ahí algunos la guardan el MisDocumentos o en otra carpeta. Y desde la ubicación que elija el usuario, la aplicación debe hacer que se envie al servidor.

Código Delphi [-]
IdFTP1.ChangeDir('.'); // en esta línea con el punto funciona perfecto.
mi duda es la línea del Put pero sigo probando.

También me surgiò otro problemita, si desde un botón Cancelar quiero cortar la conexíon y mostrar un mensaje que la conexión ha sido cancelada. Probé algo simple como esto pero me da error y con Close solo se tilda el programa.
Código Delphi [-]
Procedure TEnviarFTP.BotonCancelarClick(Sender: TObject);
begin
    if IdFTP1.Connected then
      try
         IdFTP1.Disconnect;
         IdFTP1.Free;
       except
         showmessage('La conexión ha sido cancelada);
       end;
     close;
end;

Última edición por ecfisa fecha: 24-08-2012 a las 21:51:22. Razón: Corregir problema [delphi] (interfaz mejorada)
Responder Con Cita
  #12  
Antiguo 27-08-2012
maycampana maycampana is offline
Miembro
 
Registrado: ago 2010
Posts: 61
Poder: 14
maycampana Va por buen camino
Cómo cortar la conexión sin error

Ya pude armar el tema de la ruta, lo que hago es guardar en un archivo de texto la ruta cuando el usuario realiza el backup, y luego la levanto con un memo en el form que hace el envio al servidor ftp. El nombre del archivo origen y destino lo dejé fijos. Lo dejo así, funciona bien.
Otro tema: si desde un botón Cancelar quiero cortar la conexíon y mostrar un mensaje que la conexión ha sido cancelada. Probé algo simple como esto pero me da error y con Close solo se tilda el programa. Gracias por ayudarme.

Código Delphi [-]
Procedure TEnviarFTP.BotonCancelarClick(Sender: TObject);
begin    
  if IdFTP1.Connected then      
    try         
      IdFTP1.Disconnect;         
      IdFTP1.Free;       
    except         
      showmessage('La conexión ha sido cancelada);       
    end;     
  close;
end;

Última edición por ecfisa fecha: 27-08-2012 a las 22:59:27. Razón: Corregir etiquetas [Delphi] (interfaz mejorada)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como leer un archivo de Texto alojado en un sitio web Bertifox2008 Internet 9 18-04-2009 01:07:56
Subir por post un archivo a un sitio web usando winsock recargador Internet 1 20-03-2008 17:06:31
Tarea para descargar archivo de sitio Web zugazua2001 Varios 4 17-12-2007 17:52:30
Guardar jpg en archivo XML zemog76 OOP 13 27-06-2005 02:16:47
Guardar Archivo BlueSteel Varios 10 01-04-2005 00:43:08


La franja horaria es GMT +2. Ahora son las 06:29:50.


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
Copyright 1996-2007 Club Delphi