Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Servidor privado de archivos (https://www.clubdelphi.com/foros/showthread.php?t=72366)

emula 14-02-2011 22:26:05

Servidor privado de archivos
 
Buenas tarde gente.
Estoy tratando de hacer un servidor web con permiso a descarga de ciertos archivos como si fuera FTP donde hay un usuarios y claves de acceso para poder descargar los archivos. Mediante ejemplos de por aca mismo simule un server facilmente. las paginas web privada la ve de maravilla. el detalle al sustitur la ruta de la pagina privada por la dirección del archivo.

Sera q me ayudan a ver que estoy haciendo mal. solo quiero que al agregar la ruta del archivo (ejemplo:http_:127.1.1.1/prueba.docx) me pida la clave de acceso al archivo y luego q me muestre la ventana para abrir o guardarlo en el disco no como ahorita q está abriendolo en el mismo explorer.

anexo el código..

Código Delphi [-]
///////ACTIVAR SERVIDOR///////////
procedure TForm1.BActivarClick(Sender: TObject);
begin
Servidor.Active := True;
Log.Lines.Add( 'Servidor activado.' );
BActivar.Enabled := False;
BDesactivar.Enabled := True;
end;

///////DESACTIVAR SERVIDOR///////////
procedure TForm1.BDesactivarClick(Sender: TObject);
begin
Servidor.Active := False;
Log.Lines.Add( 'Servidor desactivado.' );
BActivar.Enabled := True;
BDesactivar.Enabled := False;
end;


//////Modificación del TIdHTTPSERVER////Evento:CommandGet///////////
procedure TForm1.ServidorCommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  sDocumento: String;
  S: TStringList;
begin
  S := TStringList.Create;
  Log.Lines.Add( ARequestInfo.RemoteIP  + ': ' +
    ARequestInfo.Command + ARequestInfo.Document );
    
  // ¿Va a entrar a la página principal?
  if ARequestInfo.Document = '/' then
  begin
    S.LoadFromFile( ExtractFilePath( Application.ExeName ) + 'index.html' );
    AResponseInfo.ContentText := S.Text;
  end
  else
  begin
    // Cargamos la página web que vamos a enviar
    sDocumento := ExtractFilePath( Application.ExeName ) +
      Copy( ARequestInfo.Document, 2, Length( ARequestInfo.Document ) );

    // ¿Existe la página que ha solicitado?
    if FileExists( sDocumento ) then
    begin
      // validamos al usuario
      if not ( ( ARequestInfo.AuthUsername = 'admin' ) and
        ( ARequestInfo.AuthPassword = '1234' ) ) then
        AResponseInfo.AuthRealm := 'ServidorHTTP'
      else
      begin
        S.LoadFromFile( sDocumento );
        AResponseInfo.ContentText := S.Text;
      end
    end
    else
      AResponseInfo.ResponseNo := 404;
  end;

  AResponseInfo.CloseConnection := True;
  S.Free;
end;


Gracias de antemano...


La franja horaria es GMT +2. Ahora son las 08:25:16.

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