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 24-02-2013
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
Error al enviar archivo PDF desde una aplicacion WebBroker

Hola familia.

Estoy desarrollando un servicio de consulta de recibos de catastro via web, ya tengo funcionando lo concerniente a las consultas y la generacion del recibo en pdf dado un numero catastral. Estoy haciendo las pruebas para descargar el recibo en formato pdf hacia el lado del navegador y me saca error, traté de hacer pruebas con un archivo jpg (que es el código que muestro abajo) y en el navegador Firefox saca el siguiente mensaje "No se puede mostrar la imagen "http:/localhost:8080/exportar porque contiene errores"" y en el navegador Chrome aparece un icono en la esquina superior izquierda monstrando una imagen rota (indicando que la imagen no se puede visualizar); sin embargo logro grabar la imagen y la abro con un editor de texto (no la abro con un editor de imagenes) y me sale el texto "Hola mundo". Esta situacion es identica si trato de manejar un archivo .pdf.

Código Delphi [-]
procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  FileStream : TFileStream;
begin
    FileStream := nil;
    try
      Response.Title := 'Descargando Archivo ...';
      Response.CustomHeaders.Add('Content-Disposition=filename=' + ExtractFileName('C:\Archivos\salidaxx.jpg'));
      Response.ContentType := 'image/jpg';
      FileStream := TFileStream.Create('C:\Archivos\salidaxx.jpg', fmOpenRead + fmShareDenyNone);
      Response.ContentStream := FileStream;
      Response.SendResponse;
      Handled := True;
    finally
      FileStream.Free;
    end;
end;

Estoy trabajando con Delphi XE3 / WebBroker / Windows 7 x 64, también he probado el programa en un servidor virtual Windows 2008 Server que contraté con RackSpace y sale el mismo error; he probado incluso deshabilitando el Firewall de Windows y nada.

Agradezco cualquier colaboración.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #2  
Antiguo 24-02-2013
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 377
Poder: 22
lbuelvas Va por buen camino
Me autorespondo.

Llevo tratando de resolver el problema aproximadamente 7 dias de trabajo. Se me ocurrió, justo después de iniciar este hilo hacer un proyecto completamente nuevo y pegar solamente el segmento de código que les mandé y funcionó bien. Ahora me toca sentarme a revisar todo el proyecto para ver que fue lo que pasó o que otro elemento interfiere en el buen funcionamento de ese fragmento de código.

Parece que la instrucción
Código Delphi [-]
FileStream.Free;
es innecesaria porque
Código Delphi [-]
Response.SendResponse;
libera el recurso.

Cualquier sugerencia es bien recibida.

Gracias.
__________________
Luis Fernando Buelvas T.
Responder Con Cita
  #3  
Antiguo 24-02-2013
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 lbuelvas Ver Mensaje
...
Parece que la instrucción
Código Delphi [-]
FileStream.Free;
es innecesaria porque
Código Delphi [-]
Response.SendResponse;
libera el recurso.
Hola Luis.

Al parecer estás acertado sobre el motivo, así está comentado en el ejemplo de la ayuda de Delphi:
Código:
procedure TCustomerInfoModule.CustomerInfoModuleGetImageAction( Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  Jpg: TJPEGImage;
  S: TMemoryStream;
  B: TBitmap;
begin
  Jpg := TJPEGImage.Create;
  try
    B := TBitmap.Create;
    try
      B.Assign(BioLifeGraphic);
      Jpg.Assign(B);
    finally
      B.Free
    end;
    S := TMemoryStream.Create;
    Jpg.SaveToStream(S);
    S.Position := 0;
    Response.ContentType := 'image/jpeg';
    Response.ContentStream := S;
    // do not free the stream because the response 
    // object will handle that task.
  finally
    Jpg.Free;
  end;
end;
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
enviar sms por internet desde mi aplicación testosi Internet 19 22-09-2011 15:22:50
Enviar email desde aplicacion delphi mrh_peru OOP 0 27-05-2010 07:54:25
Como enviar sms a celular desde aplicacion! JuanErasmo API de Windows 0 18-05-2007 00:32:25
Error al enviar mail con archivo adjunto cbothamley Internet 0 08-12-2006 04:56:45
Como enviar un mail desde una aplicacion herodes Varios 3 20-04-2005 17:20:17


La franja horaria es GMT +2. Ahora son las 11:44:21.


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