2

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

这是一个好主意还是我应该注意一些事情?(或使用完全不同的东西)

4

3 回答 3

3

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

于 2011-06-16T10:39:33.470 回答
2

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

于 2011-06-16T10:39:42.593 回答
1

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

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

于 2011-06-16T10:40:31.347 回答