Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Usando componentes RealThin para crear un WebServer y enviar archivos grandes (https://www.clubdelphi.com/foros/showthread.php?t=90218)

darkamerico 28-04-2016 03:16:16

Usando componentes RealThin para crear un WebServer y enviar archivos grandes
 
Saludos amigos,

La fuente de la duda se encuentra en el siguiente tutorial:
http://www.realthinclient.com/realth...rge-files-out/

Seguí todos los pasos al pie de la letra pero no se realiza el trabajo de enviar el archivo: El código de los métodos involucrados CheckRequest y DataReceived es:

Código Delphi [-]
procedure TForm1.rdpArchivosCheckRequest(Sender: TRtcConnection);
var
  nombreArchivo:string;
  rdsServer: TRTCDataServer absolute Sender;
begin
  nombreArchivo:=GetFullFileName(rdsServer.Request.FileName);
  rdsServer.Accept;
  rdsServer.Request.Info['FName']:=nombreArchivo;
  rdsServer.Response.ContentLength:=File_Size(nombreArchivo); // 1
  rdsServer.WriteHeader(); // 2
end;

Código Delphi [-]
procedure TForm1.rdpArchivosDataReceived(Sender: TRtcConnection);
var
  nombreArchivo: string;
  viSent: integer;
  rdsServer: TRTCDataServer absolute Sender;
begin
  if rdsServer.Request.Complete then
  begin
    if rdsServer.Response.ContentLength>rdsServer.Response.ContentOut then // 1
    begin
      nombreArchivo:=rdsServer.Request.Info['FName'];

      if File_Exists(nombreArchivo) then
      begin
        if File_Size(nombreArchivo)=rdsServer.Response.ContentLength then // 2
        begin
          viSent:=rdsServer.Response.ContentLength - rdsserver.Response.ContentOut; // 3

          if viSent > 16000 then viSent:=16000;  // 4

          rdsServer.Write(Read_File(nombreArchivo, rdsServer.Response.ContentOut, viSent)); //5
        end
        else
          rdsServer.Disconnect; // 6
      end
      else
        rdsServer.Write('Archivo No Encontrado!');
    end;
  end;
end;

El navegador se queda cargando eternamente y no descarga el archivo del servidor.
El único paso que no esta claro en ese tutorial es el Punto 4 titulado: Implement OnDataReceived event in OnDataSent event.

Agradezco la ayuda.


Americo

Casimiro Notevi 28-04-2016 09:05:27

¿Has probado primero con un archivo pequeñito?
Así, al menos se sabrá si funciona o no.

darkamerico 29-04-2016 03:12:52

Hola amigo
 
Cita:

Empezado por Casimiro Notevi (Mensaje 504757)
¿Has probado primero con un archivo pequeñito?
Así, al menos se sabrá si funciona o no.

Si hice el intento y no envía nada de nada :(

AgustinOrtu 29-04-2016 03:30:18

En la página lo explica

Cita:

4. Implement OnDataReceived event in OnDataSent event.

Now, we must implement the OnDataReceived event for the OnDataSent event. If we don’t do this, then our server will just send the Header and the first 16K of Data and the transference will never end.
Te esta diciendo que los dos eventos comparten el mismo manejador (el mismo código)

darkamerico 04-05-2016 00:34:50

hola
 
efectivamente, eso hice pero al parecer olvidaron algo mas porque se queda cargando

Saludos


La franja horaria es GMT +2. Ahora son las 10:10:09.

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