tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fzli...@omnytex.com
Subject RE: Response and file downloads
Date Mon, 01 Nov 2004 20:23:44 GMT
Justin is of course completely correct.  When you submit a form to the server, you are getting
a response back.  That response could be in a number of forms, but there's no such thing as
creating a second response on the server and sending back both.

If you want to avoid client-side scripting (which is how soemthing like this would typically
be done) what you can do is return your form page simply with a link to the file to download.
 This link would in fact be a call to your server-side process that will "push" the file through
THAT response.  Be sure to set the content-disposition headers on the response and you'll
get a Save As dialog on the client WITHOUT overwriting what's in their browser.

As an alternative to the link, call a Javascript function on the pages' onLoad() event that
does the same thing as clicking the link would.  Or, if you really don't want to use the scripting,
do it with a meta redirect (or refresh, I forget off-hand) to do the same thing.  The pertinent
point is that the content-disposition header will result in the Save-As dialog rather than
overwriting what's on the browser already.

-- 
Frank W. Zammetti
Founder and Chief Software Architect
Omnytex Technologies
http://www.omnytex.com

On Mon, November 1, 2004 3:17 pm, Luc Foisy said:
> I know there is only a single response, thats why I want to create a new
> one :)
> 
> I don't even want to get into opening other windows nor do I want to rely
> on javascript for required operation.
> 
> I am not sure what you are refering to as atypical or robustness...
> 
> How do other sites generate files on the fly (take it out of a database,
> or a report just run), on form submit, and send them down the line and not
> run into this problem?
> 
> I see many people posting many places on the net that they are using the
> response to send a file, a lot of them are getting this IllegalState, but
> I never really found a followup solution that really fit my needs.
> 
> Why would the possibility exist to push a file through the response if it
> leaves you with the ability to go nowhere after?
> 
> (not really questions possed to you Justin, just hoping to keep it alive)
> 
> -----Original Message-----
> From: Justin Ruthenbeck [mailto:justinr@nextengine.com]
> Sent: Monday, November 01, 2004 2:56 PM
> To: Tomcat Users List
> Subject: Re: Response and file downloads
> 
> 
> 
> Luc,
> 
> At 11:42 AM 11/1/2004, you wrote:
>>I am having a wee problem with using the response.
>>
>>I have a form on a page, with a submit button to download a file. That
>>file is being pulled from a database and pushed to the response.
>>The problem I am having, I just used that response to submit the page,
>>so I am getting and IllegalStateException, even though it is still
>>pushing the file to the browswer
>>I also want to be able to send a redirect after the file is downloaded
>>(so I can refresh the page so the form submit page is regenerated, since
>>we are using a string to determine unique submits are only coming from
>>the pages we generated, and not the browser address bar)
>>
>>Can we get a new response from the session variable (the one available
>>to jsp writing) to send the file, then get another new response to
>>perform a redirect....
>>Basically I want to be able to do something like
>>
>>the form submits, and passes to the applications perform methods through
>>the jsp catching the submit
>>response = new Response
>>response.sendFile
>>response = new Response
>>response.sendRedirect
>>(yes I know those are not actual methods and classes, just trying to
>>explain what I want)
> 
> Your understanding of how, exactly, the http protocol works is
> incorrect.  Because it is a (single) request, (single) response protocol,
> what you're asking for cannot be done.
> 
> It seems like what you want is for a user to fill out a form, click
> submit, then be presented with a new, fresh, form again ... with the file
> download on the side.  If you have determined that you absolutely want
> this behavior (it's atypical, so doing it won't be particularly robust),
> consider programmatically opening another browser window on form submit
> from which the download will happen ... and reload your form in your
> "main" browser window.  This will, of course, subject you to any
> headaches associated with javascipt window opening.
> 
> justin
> 
> 
> 
> ______________________________________________
> Justin Ruthenbeck
> Lead Software Engineer, NextEngine Inc.
> justinr - AT - nextengine DOT com
> Confidential. See:
> http://www.nextengine.com/confidentiality.php
> ______________________________________________
> 
> 
> ---------------------------------------------------------------------
> 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