下载文件封装

function download($file, $name = '')
{
    $fileName = $name ? $name : pathinfo($file, PATHINFO_FILENAME);
    $filePath = realpath($file);

    $fp = fopen($filePath, 'rb');

    if (!$filePath || !$fp) {
        return array(
            'status' => 0,
            'info'   => 'Files Not Found',
        );
    }

    $fileName         = $fileName . '.' . pathinfo($filePath, PATHINFO_EXTENSION);
    $encoded_filename = urlencode($fileName);
    $encoded_filename = str_replace("+", "%20", $encoded_filename);

    header('HTTP/1.1 200 OK');
    header("Pragma: public");
    header("Expires: 0");
    header("Content-type: application/octet-stream");
    header("Content-Length: " . filesize($filePath));
    header("Accept-Ranges: bytes");
    header("Accept-Length: " . filesize($filePath));

    $ua = $_SERVER["HTTP_USER_AGENT"];
    if (preg_match("/MSIE/", $ua)) {
        header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');
    } else if (preg_match("/Firefox/", $ua)) {
        header('Content-Disposition: attachment; filename*="utf8\'\'' . $fileName . '"');
    } else {
        header('Content-Disposition: attachment; filename="' . $fileName . '"');
    }

    fpassthru($fp);
    exit;
}