在PHP中检测MIME类型

时间:2009-03-16 20:16:55

标签: php mime-types mime

我正在寻找在PHP中检测文件MIME类型的最佳方法(可能在大多数PHP 5.2安装上并且仍在积极开发)。

我知道mime_content_type()方法和Fileinfo扩展,但是mime_content_type()不可靠和不推荐使用,而且Fileinfo没有进入“标准”PHP(5.2)安装。

我还有其他选择吗?

4 个答案:

答案 0 :(得分:11)

(很抱歉,我意识到这是在几个月前因为我完成而被问到的。哦,好吧。不妨补充一下......)

如果是* nix服务器,您可以使用 file 命令。

file -bi <filepath>

你必须在PHP中使用“exec”才能做到这一点吗?我是PHP的新手,所以不要引用我这个但是......

$content_type = exec("file -bi " . escapeshellarg($filepath));

我没有测试它,所以你可能需要转义路径字符串并格式化输出。

Dunno,如果这比其他方法更可靠。

答案 1 :(得分:5)

您是否看过这个PEAR包?

http://pear.php.net/package/MIME_Type

答案 2 :(得分:0)

您可以对正在运行的Web服务器执行子请求,然后解析标头以获取该方式的mime类型。由于这很慢,因此使用curl只能获取标头而不是完整请求。如果您正在查看大文件,这很重要。

如果您正在运行Apache并使用php作为模块,请查看VIRTUAL函数。与使用curl相比,这是一种更快速的子请求方式。

否则,您可以通过扩展名查找mime类型。这将使所有命名良好的文件都有效。

答案 3 :(得分:-1)