public static function download($filename, $showname = '', $content = '', $expire = 180)
{
$uploadPath = CML_PROJECT_PATH . DIRECTORY_SEPARATOR . 'public' . DIRECTORY_SEPARATOR . 'Uploads' . DIRECTORY_SEPARATOR;
if (is_file($filename)) {
$length = filesize($filename);
} elseif (is_file($uploadPath . $filename)) {
$filename = $uploadPath . $filename;
$length = filesize($filename);
} elseif ($content != '') {
$length = strlen($content);
} else {
throw new FileCanNotReadableException($filename . '下载文件不存在!');
}
if (empty($showname)) {
$showname = $filename;
}
$showname = basename($showname);
if (!empty($filename)) {
$type = self::mimeContentType($filename);
} else {
$type = "application/octet-stream";
}
//发送Http Header信息 开始下载
header("Pragma: public");
header("Cache-control: max-age=" . $expire);
//header('Cache-Control: no-store, no-cache, must-revalidate');
header("Expires: " . gmdate("D, d M Y H:i:s", Cml::$nowTime + $expire) . "GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s", Cml::$nowTime) . "GMT");
header("Content-Disposition: attachment; filename=" . $showname);
header("Content-Length: " . $length);
header("Content-type: " . $type);
header('Content-Encoding: none');
header("Content-Transfer-Encoding: binary");
if ($content == '') {
readfile($filename);
} else {
echo $content;
}
exit;
}