我正在寻找在PHP中检测文件MIME类型的最佳方法(可能在大多数PHP 5.2安装上并且仍在积极开发)。
我知道mime_content_type()
方法和Fileinfo扩展,但是mime_content_type()
不可靠和不推荐使用,而且Fileinfo没有进入“标准”PHP(5.2)安装。
我还有其他选择吗?
答案 0 :(得分:11)
(很抱歉,我意识到这是在几个月前因为我完成而被问到的。哦,好吧。不妨补充一下......)
如果是* nix服务器,您可以使用 file 命令。
file -bi <filepath>
你必须在PHP中使用“exec”才能做到这一点吗?我是PHP的新手,所以不要引用我这个但是......
$content_type = exec("file -bi " . escapeshellarg($filepath));
我没有测试它,所以你可能需要转义路径字符串并格式化输出。
Dunno,如果这比其他方法更可靠。
答案 1 :(得分:5)
您是否看过这个PEAR包?
答案 2 :(得分:0)
您可以对正在运行的Web服务器执行子请求,然后解析标头以获取该方式的mime类型。由于这很慢,因此使用curl只能获取标头而不是完整请求。如果您正在查看大文件,这很重要。
如果您正在运行Apache并使用php作为模块,请查看VIRTUAL函数。与使用curl相比,这是一种更快速的子请求方式。
否则,您可以通过扩展名查找mime类型。这将使所有命名良好的文件都有效。
答案 3 :(得分:-1)