使用/ usr / bin / file来确定文件类型?

时间:2011-06-16 10:37:02

标签: php linux file file-upload identification

我打算使用这个系统程序/ usr / bin / file来确定上传的文件内容类型,然后采取相应的行动。

这是一个好主意还是有什么我应该注意的? (或者使用完全不同的东西)

3 个答案:

答案 0 :(得分:3)

mime_content_typefinfo_file是确定mime类型的首选方法(在大多数php发行版中通常都会启用一个)。他们使用相同的magic.mime数据库作为外部工具,这就是为什么我只使用它作为后备。

使用外部工具还需要从输出中提取mime类型,因此它有点涉及代码:

$type = exec("/usr/bin/file -iL " .escapeshellcmd($fn). " 2>/dev/null");
if ($type = trim(strtok(substr(strrchr($type, ":"), 1), ";"))) {
    return $type;
}

如果您的问题是关于可靠性:是的,这是一个很好的方法。在所有当前的Linux / U * ix服务器上,通过魔术字节确定文件类型是非常可靠的。

答案 1 :(得分:2)

PHP具有fileinfo扩展名,它使用相同的机制但是PHP原生。

答案 2 :(得分:1)

如果您可以使用PECL扩展(或使用php> = 5.3),我建议您使用Fileinfo扩展名。

如果没有,mime_content_type()函数会这样做,但请注意它现在已被弃用(赞成或者fileinfo)