Re: Redirect after download
| From: | Thomas Munz | Date: | Wed, 01 Dec 2004 09:17:41 +0000 |
| Subject: | Re: Redirect after download | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-203215@lists.php.net to get a copy of this message | ||
> I am writing a file download system and I need to be able to do a
> redirect after the download is finished.
>
> Basically, the user will be presented with a simple HTML page that
> contains a link to download the file (href="/download.php?fileid=143").
> I have the code to send the file working just fine, but I can not figure
> out how to do a redirect after the download is complete. I have spent
> the last hour searching the archives, and the closest I have found is:
>
>
> http://marc.theaimsgroup.com/?l=php-general&m=106128750620349&w=2
>
> But I can't seem to find a way to actually do a Location style
> redirect. Even static HTML does not display the way one would expect.
> Using a small text file to download, I can "view source" from NS and see
> the everything that was sent to the browser, and everything is there
> (the ---Boundary(s), the text file, and the simple HTML line).
>
> So my question is: How can I perform a redirect after the file has been
> sent.
>
> Thanks,
>
> Justin
>
> Here is a snippit of download.php (send_file() was found reading the
> comments to the fread function in the PHP documention):
>
> header("Content-Type: multipart/mixed; boundary=\"-Boundary-12399\"");
>
> if(!send_file($file)) {
> die("File transfer failed!");
> exit;
> }else{
>
> print("\n");
> print("---Boundary-12399\r\n");
> print("Content-Type: text/html\r\n");
> print("\r\n");
> print
> "<html><head><title>Success</title></head><body><b>File
> transfer s
> uccessful!</b></body></html>";
> print("\r\n---Boundary-12399\r\n");
> print("\r\n");
> exit;
> }
>
> function send_file($file) {
> // read file and send to user
> $status = FALSE;
> if ( (!is_file($file['filelocation'])) or
> (connection_status()!=0) ) return(FALSE);
> print("---Boundary-12399\r\n");
> print("Content-type: application/octet-stream\r\n");
> print("Content-Disposition: inline; filename=\"" .
> $file['filename'] . "\"\r\n");
> print("Content-length: " . $file['filesize'] . "\r\n");
> print("Expires: " . gmdate("D, d M Y H:i:s",
> mktime(date("H")+2, date("i"), date("s"), date("m"),
> date("d"),
> date("Y") ) ) . " GMT\r\n");
> print("Last-Modified: " . gmdate("D, d M Y H:i:s")."
> GMT\r\n");
> //print("Cache-Control: no-cache, must-revalidate\r\n");
> //print("Pragma: no-cache\r\n");
> if ($fh = fopen($file['filelocation'], 'rb')) {
> while(!feof($fh) and (connection_status()==0)) {
> print(fread($fh, 1024*8));
> flush();
> }
> $status = (connection_status()==0);
> fclose($fh);
> }
> return($status);
> }
How about go directly to the site where you want to locate and make there the
file downloadable... ?