mime_content_type()

函数用于获取指定文件的 MIME 类型。它的参数是一个字符串,代表文件的路径。

在PHP 5.3.0 版本之前,mime_content_type() 函数是依赖于系统中是否安装了 mime_magic 扩展或者是否配置了 mime_magic.magicfile 路径。

# httpd.conf
LoadModule mime_magic_module modules/mod_mime_magic.so

在 PHP 5.3.0 版本以后,它会尝试使用系统的 file 命令来获取 MIME 类型,若 file 命令不可用则回退到 mime_magic 扩展或 mime_magic.magicfile 配置。在 PHP 5.3.0 版本之后,若未找到合适的方式获取 MIME 类型,则该函数会返回 FALSE

注:该函数在后续的PHP版本中被废弃,并从 PHP 5.5.0 版本开始不再推荐使用,因为它依赖于底层的 fileinfo 扩展。

自定义函数

mime_magic扩展没有开启时,可以尝试通过其他方式获取文件的 MIME 类型。一个常用的方式是通过文件的后缀名来推断 MIME 类型。

但需要注意的是,这种方式并不是100% 准确,因为同一种文件类型可能具有不同的扩展名。

function getMimeType($filename) {
    $mime_types = [
        'txt' => 'text/plain',
        'htm' => 'text/html',
        'html' => 'text/html',
        'php' => 'text/html',
        'css' => 'text/css',
        'js' => 'application/javascript',
        'json' => 'application/json',
        'xml' => 'application/xml',
        'swf' => 'application/x-shockwave-flash',
        'flv' => 'video/x-flv',
        // 添加更多文件类型及其对应的 MIME 类型
    ];

    $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
    return isset($mime_types[$ext]) ? $mime_types[$ext] : 'application/octet-stream';
}

$file = 'C:\Windows\phpD947.tmp';
$mime_type = getMimeType($file);
echo "文件的 MIME 类型是:$mime_type";

虽然这种方法可以提供一种简单的途径来猜测文件的 MIME 类型,但它并不是完全可靠的,因为文件类型和其对应的 MIME 类型可能有所变化。最佳的方式仍然是使用PHP的fileinfo扩展来获取文件的真实 MIME 类型。

作者 admin

百度广告效果展示