如何使用PHP查找文件的MIME类型?

我有一个索引.php文件,它必须处理许多不同的文件类型。我如何根据 ?REQUEST_URI

如果我请求,并且所有请求都通过索引.php重定向,如下所示http://site/image.jpg

<?php
   include('/www/site'.$_SERVER['REQUEST_URI']);
?>

我如何使它正常工作?

我应该根据所请求文件的扩展名进行测试,还是有没有办法获取文件类型?


答案 1

如果您确定只处理图像,可以查看exif_imagetype() PHP 函数,该函数尝试返回图像 MIME 类型。

如果您不介意外部依赖项,还可以查看出色的getID3库,该库可以确定许多不同文件类型的MIME类型。

最后,您可以查看mime_content_type() 函数 - 但它已被文件信息 PECL 扩展弃用。


答案 2

mime_content_type() 已被弃用,因此您将来无法指望它工作。有一个“fileinfo”PECL扩展名,但我没有听说过它的好东西。

如果你在类Unix服务器上运行,你可以执行以下操作,这对我来说很好:

$file = escapeshellarg($filename);
$mime = shell_exec("file -bi " . $file);
$filename should probably include the absolute path.

推荐