我正在寻找最好的(可能在大多数 PHP 5.2 安装并且仍在积极开发中)检测 PHP 中文件 MIME 类型的方法。
我知道该mime_content_type()
方法和 Fileinfo 扩展名,但是mime_content_type()
不可靠且已弃用,并且 Fileinfo 不是“标准” PHP(5.2)安装。
我还有其他选择吗?
我正在寻找最好的(可能在大多数 PHP 5.2 安装并且仍在积极开发中)检测 PHP 中文件 MIME 类型的方法。
我知道该mime_content_type()
方法和 Fileinfo 扩展名,但是mime_content_type()
不可靠且已弃用,并且 Fileinfo 不是“标准” PHP(5.2)安装。
我还有其他选择吗?
(大声笑对不起,我意识到这是几个月前我正在整理的时候问的。哦,好吧。不妨添加这个......)
如果它是 *nix 服务器,您可以使用file命令。
file -bi <filepath>
我猜你必须在 PHP 中使用“exec”来做到这一点?我是 PHP 新手,所以不要引用我的话,但是......
$content_type = exec("file -bi " . escapeshellarg($filepath));
我没有对其进行测试,因此您可能需要转义路径字符串并格式化输出。
不知道这是否比其他方法更可靠。
你看过这个 PEAR 包吗?
您可以对正在运行的网络服务器进行子请求,然后解析标头以获取 mime 类型。由于这很慢,因此使用 curl 仅获取标头而不是完整请求。如果您正在查看大文件,这一点很重要。
如果您正在运行 Apache 并使用 php 作为模块,请查看 VIRTUAL 函数。与使用 curl 相比,这是一种更快的子请求方式。
否则,您可以通过扩展名查找 mime 类型。这将使所有命名良好的文件都能正常工作。