public static function download($filename)
{
if (!headers_sent()) {
while (@ob_end_clean()) {
// noop
}
// required for IE, otherwise Content-disposition is ignored
if (Sys::iniGet('zlib.output_compression')) {
Sys::iniSet('zlib.output_compression', 'Off');
}
Sys::setTime(0);
// Set headers
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);
header('Content-Disposition: attachment; filename="' . basename(str_replace('"', '', $filename)) . '";');
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filename));
// output file
if (Sys::isFunc('fpassthru')) {
$handle = fopen($filename, 'rb');
fpassthru($handle);
fclose($handle);
} else {
echo file_get_contents($filename);
}
return true;
}
return false;
}