| 
	
 | 
 Posted by Jerry Stuckle on 10/20/07 20:11 
Dahak wrote: 
> 	I may be having an attack of the stupids and my Google-foo is 
> failing me today, but I can't seem to get past this problem. 
>  
>  
> 	I have a script that indexes a directory and provides the user 
> with a simple interface to select files to download. 
>  
> 	Once they've made their selection and submitted the form, the form 
> action reloads the page. 
>  
> 	On reload, the script checks for the presence of POST variables 
> and, if not found, redisplays the previous form or, if found collects 
> files for download. 
>  
> 	If this is the first request, the target files are collected into 
> a ZIP file and saved to the server for reuse. 
>  
> 	Then the script serves the saved file to the user for download 
> with the following code: 
>  
> --- 
>  
> header('Pragma: public'); 
> header('Content-type: application/zip'); 
> header('Content-length: ' . filesize($zipdir . '/' . $zipfilename)); 
> header('Content-Disposition: attachment; 
> filename="'.$zipfilename.'"'); 
>  
> //    readfile( $zipdir . '/' . $zipfilename ); 
> if ( ( $fp = fopen( $zipdir . '/' . $zipfilename, 'rb' ) ) === false ) 
> exit; 
> @fpassthru( $fp ); 
> @fclose( $fp ); 
>  
> ---	 
>  
> 	This all works fine.  The commented out readfile() _also_ worked 
> fine, but I've been trying to see how to get past my problem, which 
> is: 
>  
> 	Once the file is sent to the output stream, the script seems to 
> halt. 
>  
> 	I want to get the script to continue rendering a 'Thank you for 
> downloading...'-type page, but nothing seems to happen after the 
> readfile() or fpassthru(). 
>  
> 	In practical terms, this is nothing more than an annoyance.  The 
> end user gets the requested ZIP file, but nothing else can be done in 
> the script.  (I have a 'busy' graphic that I unhide on form submission 
> that I want to hide again upon completion.) 
>  
>  
> 	What am I forgetting?  Is there something in the header man pages 
> that I've missed? 
>  
> 	Other examples I've searched for online seem to imply that script 
> execution should continue. 
>  
>  
> 	Any thoughts would be appreciated. 
>  
> -Joe 
>  
 
Joe, 
 
Yes, that's normal.  When the browser gets the zip file content header,  
it won't be expecting html (or vice versa).  File downloads are  
typically a "dead end" - nothing more in that window following the download. 
 
The easy way around this is to display your page again with a clickable  
link to the zip file.  That way you can display HTML and yet allow the  
user to download the file.  And if you want to automate it, a little  
javascript can be used to start the actual download. 
 
--  
================== 
Remove the "x" from my email address 
Jerry Stuckle 
JDS Computer Training Corp. 
jstucklex@attglobal.net 
==================
 
  
Navigation:
[Reply to this message] 
 |