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