On Fri, May 4, 2007 9:56 am, strawks wrote:
$filesize=filesize($path);
$mimetype='application/zip';
// Make sure there's not anything else left
ob_clean_all();
// Start sending headers
header(Pragma: public); // required
header(Expires: 0);
header(Cache-Control: must-revalidate, post-check=0,
pre-check=0);
header(Cache-Control: private,false); // required for certain
browsers
header(Content-Transfer-Encoding: binary);
header(Content-Description: File Transfer);
header(Content-Type: .$mimetype);
header(Content-Disposition: attachment; filename=\.$name.\;
);
header(Content-Length: .$filesize);
All these headers scare me -- I've found that if you add all these,
sooner or later, you run into some browser that didn't do it right
anyway.
You may want to look at an alternative K.I.S.S. approach (rant):
http://richardlynch.blogspot.com
YMMV
The problem is that Apache process the output throught gzip and so
drop the Content-Length header replacing it with a chunked transfer.
This should work fine but Internet Explorer simply save the raw gzip
compressed data instead of the ZIP archive. However this works fine
with Firefox.
gzip encoding is unecessary since I'm transfering a ZIP archive, so I
think just disabling it should solve the problem, but I haven't found
how to do this.
There was a discussion yesterday on php-internals regarding Apache/PHP
forcing the HTTP response to 1.1 even if the browser asked for 1.0.
Part of that discussion was a sub-discussion about how it ought to be
possible for a PHP developer to FORCE the response to be 1.0
If your response is 1.0, there would be no chunking, as I understand it.
So there may be an answer for you buried in that thread, or you may
want to weigh in on a real-world need for this feature.
--
Some people have a gift link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php