Thanks Jim, I'm going to give that a try and see if I can get it to work.

-Chris

-----Original Message-----
From: Jim Schueler [mailto:jschue...@eloquency.com] 
Sent: Tuesday, April 30, 2013 2:28 PM
To: Chris Faust
Cc: modperl@perl.apache.org
Subject: RE: Download then display page

Yes, that's what I have in mind.  I only occassionally write headers. 
But I envision something similar to what you've got below:

   $redirect = ... ;    ## URL to the spreadsheet

   $r->content_type('text/html') ;
   $r->headers_out->set( Location => $redirect ) ;
   $r->send_http_header ;

   $r->print( $content->output ) ;
   return Apache2::Const::REDIRECT ;

Originally, I wondered about using a "multipart/mixed" response type. 
I've never heard that any browser supports such a thing.  Although that
seems like a more elegant solution.

  -Jim

On Tue, 30 Apr 2013, Chris Faust wrote:

>>> But the response should be a redirect to a URL that returns the
> spreadsheet instead of a 200 OK.  I believe that the body of the 
> original response will be displayed until the redirect succeeds.
>
> I'm not sure what I follow you, something like this?
>
> $r->content_type('text/html');
> print $content->output;
> $r->headers_out->set(Location => $redirect); return 
> Apache2::Const::REDIRECT;
>
> And the $redirect URL would then do the sending of the file itself?
>
> Thanks!
>
>
> -----Original Message-----
> From: Jim Schueler [mailto:jschue...@eloquency.com]
> Sent: Tuesday, April 30, 2013 1:53 PM
> To: Chris Faust
> Cc: modperl@perl.apache.org
> Subject: Re: Download then display page
>
> I believe the following will work  (never tried it though):
>
> The request should return a 'text/html' type document that displays 
> the instructions.  But the response should be a redirect to a URL that 
> returns the spreadsheet instead of a 200 OK.  I believe that the body 
> of the original response will be displayed until the redirect succeeds.
>
> In the old days, we performed this trick by using meta tag equivalents 
> of the response headers.  And I expect browsers will respond to actual 
> HTTP headers the same way.  I say "the old days" because for last 18 
> years, I've relied on javascript.  But there may be reasons for not 
> wanting a different type solution.
>
>  -Jim
>
>
>
>
> On Tue, 30 Apr 2013, Chris Faust wrote:
>
>>
>> Hi,
>>
>>  
>>
>> I'm trying to have a form submission package up the results in a xls 
>> file and then start the download for the user as well as present a 
>> page where they can click on the file if the download has not already 
>> automatically started.
>>
>>  
>>
>> I can do each separately but not both together, I have something like
> this:
>>
>>  
>>
>> ... Make up our xls file download and put it in $output
>>
>>  
>>
>> $r->content_type('application/xls');
>>
>> $r->err_headers_out->add('Content-Disposition' => 'attachment;
filename="'
> .
>> $download_name . '"');
>>
>> $r->print($output);
>>
>> $content->param('set some html template vars....');
>>
>> $r->content_type('text/html');
>>
>> print $content->output;
>>
>>  
>>
>> When I due the above, then I get prompted for the download but that 
>> is it, I never get the page. Even if I reverse the order and try to 
>> do the page
>> first:
>>
>>  
>>
>> $r->content_type('text/html');
>>
>> print $content->output;
>>
>> $r->content_type('application/xls');
>>
>> $r->err_headers_out->add('Content-Disposition' => 'attachment;
filename="'
> .
>> $download_name . '"');
>>
>> $r->print($output);
>>
>> $content->param('set some html template vars....');
>>
>>  
>>
>> That still doesn't work. Probably not a mod_perl specific question 
>> but I'm hoping someone can shed some light
>>
>>  
>>
>> TIA!
>>
>> -Chris
>>
>>  
>>
>>  
>>
>>
>>
>
>
>


Reply via email to