Ver Mensaje Individual
  #20  
Antiguo 24-11-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Reputación: 21
AzidRain Va camino a la fama
Con FTP lo resuelves entonces. Necesitas utilizar algún componente para conectarse al servidor (la pestaña Indy tiene uno), solo lo configuras indicando a que dirección se va a conectar y con una instrucción subes el archivo. Hay muchos ejemplos en la red.

Por el lado del servidor, solo necesitas instalar el software, te recomiendo FileZilla Server, es libre y bastante sencillo de configurar. Recuerda que debes configurar en este software y cualquier otr FTP, al menos un usuario con su contraseña y las carpetas del servidor a donde va a tener acceso ese usuario, que obviamente será tu aplicación.

LO puedes implementar muy sencillamente así:

1.- El cliente escanea su documento
2.- Ya escaneado el documento se envía al servidor FTP (habrá que definir un nombre para él, o bien generar uno aleatorio y que el usuario describa que contiene)
3.- Si todo salió bien y se subió sin problema, grabar en la tabla de la BD el nombre de archivo y la descripcion que le puso el usuario.

Para acceder al archivo hacemos lo contrario:

1.- El cliente consultar la tabla de la BD hasta encontrar su archivo
2.- Al encontrarlo se solicita o descarga dicho archivo mediante FTP utilizando los datos que obtuvimos al consultar la tabla
3.- El usuario lo guarda en forma local

Una ventaja adicional es que puedes tener un servidor para la base de datos y otro distinto para guardar los archivos ya que la conexion FTP no tiene que ser forzosamente al mismo servidor que mantiene la base de datos. Por ejemplo, puedes tener el servidor de BD en una ciudad y los archivos físicos en otra diferente.

Si quieres mas info te pongo un ejemplo de como se hace, esta unidad sube un archivo a un servidor previamente configurado:

Código Delphi [-]
unit uCFD_FTP;


interface
uses IdFTP;
const FTP_USERNAME = 'usuario';
      FTP_PASSWORD = 'password';


procedure CFD_UpLoad(aOrFile,aDestFile:string);
procedure CFD_UpLoadFiles(aXMLOrfile,aXMLDestFile,aPDFOrFile, aPDFDestFile: string);




implementation

procedure CFD_UpLoad(aOrFile,aDestFile:string);
var Servidor: TIdFTP;
begin
  Servidor := TIdFTP.Create(nil);
  try
    Servidor.Passive  := TRUE;
    Servidor.Username := FTP_USERNAME;
    Servidor.Password := FTP_PASSWORD;
    Servidor.Host     := (poner aqui la IP o direccion del servidor FTP)
    Servidor.Connect;  // Conectarse
    Servidor.Put(aOrFile,aDestFile); //subir el archivo
    Servidor.Disconnect; //desconectarse


  finally
    Servidor.Free;
  end;

end;


// Este es lo mismo solo que sube 2 archivos distintos...
procedure CFD_UpLoadFiles(aXMLOrfile,aXMLDestFile,aPDFOrFile, aPDFDestFile: string);
var Servidor: TIdFTP;
Begin
   Servidor := TIdFTP.Create(nil);
  try
    Servidor.Passive  := TRUE;
    Servidor.Username := FTP_USERNAME;
    Servidor.Password := FTP_PASSWORD;
    Servidor.Host     := capadatos.Conexion.HostName;
    Servidor.Connect;
    Servidor.Put(aXMLOrFile ,aXMLDestFile);
    Servidor.Put(aPDFOrFile ,aPDFDestFile);
    Servidor.Disconnect;


  finally
    Servidor.Free;
  end;

End;

end.

Con eso ya puedes hacer bastante.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita