tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steve Vanspall" <st...@crmsoftware.com.au>
Subject Re: Serving files using tomcat
Date Wed, 04 May 2005 15:47:34 GMT
Unfortunately that is what I do

OutputStream dos = null;
    FileInputStream fis = null;
   try
   {
    fis = new FileInputStream(rf.getPdf());
    response.setContentType("application/pdf");
    response.setContentLength((int) rf.getPdf().length());
    //response.setHeader(response.)
    dos = response.getOutputStream();

    int read = -1;
    byte[] bytes = new byte[100000];
    while((read = fis.read(bytes)) != -1)
     dos.write(bytes, 0, read);
    dos.flush();
    return mapping.findForward("PDF");
   } catch (Exception e)
   {
    // TODO Auto-generated catch block
    if(e instanceof SocketException)
     return mapping.findForward("reload");
    throw new IOException(e.toString());
   }
   finally
   {

    if(dos != null)
     dos.close();
    if(fis != null)
     fis.close();


   }

Acrobat now loads but the PDF doesn't appear.

Probably worth mentioning that I use struts, so I forward to a blank page
with the content type set to application/pdf, maybe that is the problem, but
not sure what else to do with the return.

When I do the same thing with a dynamic image and forward to a page with a
jpg content type, the image appears without a problem.

Steve
----- Original Message -----
From: "Anhony" <anthonys123@comcast.net>
To: "Tomcat Users List" <tomcat-user@jakarta.apache.org>
Sent: Thursday, May 05, 2005 1:02 AM
Subject: Re: Serving files using tomcat


> Greetings,
>
> Take a look at the code fragment below. It should serve as a good starting
> point.
> I hope this helps.
>
> AS-
>
>     private void processPDFRequest(HttpServletRequest request,
> HttpServletResponse response) throws ServletException, IOException,
> Exception
>     {
>         int bytesCopied = 0;
>
>         FileInputStream fin = null;
>         OutputStream out = null;
>
>         String fileAddress = "The fully qualified path to your PDF file";
>         if( fileAddress == null )
>             return;
>
>         int ext = fileAddress.lastIndexOf( '.' );
>         if( ext != -1 )
>         {
>             ext = fileAddress.substring( ext+1,
> fileAddress.length() ).toLowerCase();
>
>             if( ext == "pdf" )
>                 response.setContentType("application/pdf");
>             else
>                 "Do whatever you think best to do"
>         }
>         else
>             "Do whatever you think best to do"
>
>         try
>         {
>             out = response.getOutputStream();
>             fin = new FileInputStream( fileAddress );
>             bytesCopied = StreamCopier.copy( fin, out );
>         }
>         finally
>         {
>             if( fin != null )
>                 fin.close();
>             if( out != null )
>             {
>                 out.flush();
>                 out.close();
>             }
>         }
>     }
>
>
> ----- Original Message -----
> From: "Steve Vanspall" <steve@crmsoftware.com.au>
> To: "Tomcat User List" <tomcat-user@jakarta.apache.org>
> Sent: Wednesday, May 04, 2005 9:29 AM
> Subject: Serving files using tomcat
>
>
> Hi,
>
> I have been looking around and haven't found a solution that works
>
> basically I have a PDF that gets created dynamically. Now to save memory I
> have the PDF written to a file rather than a ByteArray. The only way I can
> be sure that I wont encounter errors creating the file is to use
> File.createTempFile. The creation goes of ok. And I have checked the file
> itself and the PDF looks great.
>
> How do i now serve this to the user who has requested it. If I try to
write
> it to the response (using the same method I use to creare dynamic image,
> this works), it just shows up a blank screen.
>
> The problem also is, even if it did show the PDF, acrobat, to my
understand
> will read only chunks of the stream and will go pack to get more. Thisis a
> problem because there is nothing to go back for.
>
> So the point,
>
> If I can just redirect the browser to a file in the tomcat temp directory
> (can I do that, will the use have access to that directory), then how do I
> translate the location of the temp directory to a url that is accesible
> outside.
>
> If not then what other suggestions can people give me.
>
> Thanks in advance
>
> Steve
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Mime
View raw message