1. /**
    2. * 文件下载
    3. * @param $filepath 文件路径
    4. * @param $filename 文件名称
    5. */
    6. function file_down($filepath, $filename = '') {
    7. if(!$filename) $filename = basename($filepath);
    8. if(is_ie()) $filename = rawurlencode($filename);
    9. $filetype = fileext($filename);
    10. $filesize = sprintf("%u", filesize($filepath));
    11. if(ob_get_length() !== false) @ob_end_clean();
    12. header('Pragma: public');
    13. header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
    14. header('Cache-Control: no-store, no-cache, must-revalidate');
    15. header('Cache-Control: pre-check=0, post-check=0, max-age=0');
    16. header('Content-Transfer-Encoding: binary');
    17. header('Content-Encoding: none');
    18. header('Content-type: '.$filetype);
    19. header('Content-Disposition: attachment; filename="'.$filename.'"');
    20. header('Content-length: '.$filesize);
    21. readfile($filepath);
    22. exit;
    23. }
    /**
     * IE浏览器判断
     */
    function is_ie() {
        $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
        if((strpos($useragent, 'opera') !== false) || (strpos($useragent, 'konqueror') !== false)) return false;
        if(strpos($useragent, 'msie ') !== false) return true;
        return false;
    }
    
    /**
     * 取得文件扩展
     *
     * @param $filename 文件名
     * @return 扩展名
     */
    function fileext($filename) {
        return strtolower(trim(substr(strrchr($filename, '.'), 1, 10)));
    }