thanks, but flush() doesn't help. 

I guess I need to know if there is a way to detect that the request has been
cancelled?

Charlie

> -----Original Message-----
> From: Rajah Kalipatnapu [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, October 17, 2001 6:15 PM
> To: [EMAIL PROTECTED]
> Subject: RE: cancelled request
> 
> 
> I'm not sure how far this helps. But try flush() every time 
> you write bytes
> to outputstream.
> Even though u r loosing the advantage of BufferStream by 
> flushing every
> time, there is a chance that u'll get an IOException if the 
> user cancels the
> download and the IOStream is closed, as the flush() forces 
> the bytes to the
> end stream.
> 
>  while(-1 != (bytesRead = bisDownload.read(buff, 0, buff.length)))
>  {
>    bosDownload.write(buff, 0, bytesRead);
>    bosDownload.flush();
>  }
> 
> -Raj
> 
> -----Original Message-----
> From: Barry White [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, October 17, 2001 2:50 PM
> To: [EMAIL PROTECTED]
> Subject: Re: cancelled request
> 
> 
> I have never done anything like that but I was thinking you 
> could use some
> kind of timeout in your servlet.  Try doing this in your 
> while loop.  You
> could also check bytesread and make sure it is changing.
> 
> hope this helps,
> Barry
> ----- Original Message -----
> From: "Cox, Charlie" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Wednesday, October 17, 2001 4:32 PM
> Subject: cancelled request
> 
> 
> > I didn't see anything about this in the archives, so 
> hopefully someone can
> > help me out here.
> >
> > TC 3.2.1/IIS 5/W2K
> > I am using a servlet to serve a large file (50MB) and 
> everything works
> fine
> > if it completes as requested. But if the user clicks 'cancel', I get
> > different results from Tomcat. Sometimes the servlet stops 
> running where
> it
> > is, as if the thread is interrupted, while other times it continues
> running
> > like nothing happened. In the both cases the download box 
> disappears from
> > the browser. Netscape 6.1,4.7 and IE 5.5 all act the same 
> way. (IE 5.0 has
> a
> > problem here, but I have other problems with it too).
> >
> > here's the code in my servlet providing the file
> >
> > resp.setContentType("application/octet-stream; name=somefile.exe;");
> > resp.setHeader("Content-Disposition",
> "attachment;filename=somefile.exe;");
> > resp.setHeader("Content-Length", String.valueOf(filelength) + ";");
> >
> > InputStream isDownload;
> > isDownload = getServletContext().getResourceAsStream(filename);
> > BufferedInputStream bisDownload = new
> BufferedInputStream(isDownload,2048);
> > BufferedOutputStream bosDownload = new
> > BufferedOutputStream(resp.getOutputStream());
> > byte[] buff = new byte[2048];
> > int bytesRead;
> >
> > while(-1 != (bytesRead = bisDownload.read(buff, 0, buff.length)))
> > {
> > bosDownload.write(buff, 0, bytesRead);
> > }
> > bosDownload.close();
> > bisDownload.close();
> >
> >
> > The reason that this is an issue is that I send an email 
> upon completion
> of
> > this download, and it shouldn't be sent if the user clicks 
> 'cancel' but it
> > is being sent when the servlet continues processing. I've 
> also wrapped
> this
> > code is a try/catch and no exception/error is ever thrown.
> >
> > Charlie
> >
> 

Reply via email to