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 类型。