NYCPHP Meetup

NYPHP.org

[nycphp-talk] File Download Question

Eddie Haber php at haberco.com
Thu Oct 20 14:19:56 EDT 2005


Dan,

You're a miracle worker! I had been wondering about this one for a couple
weeks. That fixed the problem. Thank you so much!

Eddie


On 10/20/05 1:59 PM, "Dan Cech" <dcech at phpwerx.net> wrote:

> Eddie,
> 
> It sounds to me like you may have an issue with your sessions, as
> presumably the php download script is blocking your other pages from
> accessing the session.
> 
> If you put a call to session_write_close
> (http://www.php.net/session_write_close) after anything that needs
> access to the session but before the portion of the script that takes a
> long time, it should fix your problem.
> 
> Dan
> 
> 
> Eddie Haber wrote:
>> I have a file download area on my site. Users click a link, a JS pop-up
>> window pops with a meta-refresh tag that refreshes to the file to be
>> downloaded. The pop-up window also refreshes (reloads) the opener page.
>> 
>> Everything works great, except one problem. I am using a PHP script as a
>> gatekeeper/passthru for the file to be downloaded. Once the file download
>> begins, no other links on the browser (parent or pop-up) will resolve until
>> the download is over or is stopped. The second the download stops, any
>> clicked on link resolves.
>> 
>> The odd part is: If the meta-refresh in the pop-up goes directly to the zip
>> file, the browser can link away without problem. But if meta-refresh links
>> to the php script that dispenses the file, the links won't resolve during
>> download. Script is below.
>> 
>> Much appreciated! Thank you,
>> Eddie
>> 
>> 
>> <?
>> 
>> // a bunch of security checking
>> 
>> // filename (all are zip files)
>> $filename = "somepath/somefile.zip";
>> 
>> // commented headers below are
>> // alternate tries that didn't work
>> 
>> // output
>> header("Pragma: public");
>> header("Expires: 0"); // set expiration time
>> header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
>> header("Cache-Control: public");
>> header('Content-Description: File Transfer');
>> header("Content-Type: application/zip");
>> // header("Content-Type: application/force-download");
>> // header("Content-Type: application/octet-stream");
>> // header("Content-Type: application/download");
>> header("Content-Disposition: attachment;
>> filename=".basename($filename).";");
>> header("Content-Transfer-Encoding: binary");
>> header("Content-Length: " . filesize($filename));
>> 
>> @readfile("$filename");
>> exit;
>> 
>> ?>
>> 
>> 
>> _______________________________________________
>> New York PHP Talk Mailing List
>> AMP Technology
>> Supporting Apache, MySQL and PHP
>> http://lists.nyphp.org/mailman/listinfo/talk
>> http://www.nyphp.org
> 
> _______________________________________________
> New York PHP Talk Mailing List
> AMP Technology
> Supporting Apache, MySQL and PHP
> http://lists.nyphp.org/mailman/listinfo/talk
> http://www.nyphp.org





More information about the talk mailing list