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" <[EMAIL PROTECTED]>
To: "Tomcat Users List" <[email protected]>
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" <[EMAIL PROTECTED]>
> To: "Tomcat User List" <[email protected]>
> 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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]