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



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

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

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服务器上,通过魔术字节确定文件类型是非常可靠的。

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

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

如果没有,mime_cont_type()函数就可以了,但请注意,它现在已被弃用(赞成或fileinfo)

相关内容

  • 没有找到相关文章

最新更新