Send binary files with gzip encoding disabled
| From: | strawks | Date: | Fri, 04 May 2007 14:56:52 +0000 |
| Subject: | Send binary files with gzip encoding disabled | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-254416@lists.php.net to get a copy of this message | ||
Hello,
I'm trying to send a ZIP file generated on the fly in a temporary directory.
The ZIP file is created successfully and I'm using the following code to send it to the client
:
$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);
$fp=@fopen($path,"rb");
while(!@feof($fp))
{
set_time_limit(0);
print @fread($fp, 8192);
}
@fclose($fp);
The ob_clean_all() function :
function ob_clean_all () {
$ob_active = ob_get_length () !== false;
while($ob_active) {
ob_end_clean();
$ob_active = ob_get_length () !== false;
}
return true;
}
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.
Any help would be appreciated.
--
strawks.
---------------------------------
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! Profitez des
connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses.