Ver Mensaje Individual
  #1  
Antiguo 14-02-2011
emula emula is offline
Registrado
 
Registrado: feb 2009
Posts: 8
Reputación: 0
emula Va por buen camino
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...

Última edición por Casimiro Notevi fecha: 14-02-2011 a las 22:48:16.
Responder Con Cita