PHP - FileInfo 函数


FileInfo 函数模块可以通过检查文件内特定位置的某些魔术字节序列来尝试确定文件的内容类型和编码。虽然这不是一种理想的方法,但所使用的启发式方法非常出色。

在 PHP 5.3.0 版本之前,可能需要 magic_open 库来构建此扩展。

从 PHP 5.3.0 开始,可以默认启用此扩展。在此之前,fileinfo 是 PECL 扩展名,但不再维护在那里。

Windows 用户必须在 php.ini 包含捆绑的 php_fileinfo.dll 文件才能启用此扩展。

libmagic 库可以与 PHP 捆绑在一起,但包括 PHP 特定的更改。维护了一个名为 libmagic.patchlibmagic 补丁,可以在 PHP fileinfo 扩展源中找到。

预定义常量

常量由此扩展在下面定义,并且仅当扩展已编译为 PHP 或在运行时动态加载时可用。

常量 描述
FILEINFO_NONE (integer) 无特殊处理。
FILEINFO_SYMLINK (integer) 遵循符号链接。
FILEINFO_MIME_TYPE (integer) 返回 MIME 类型。自 PHP 5.3.0 起可用。
FILEINFO_MIME_ENCODING (integer) 返回文件的 MIME 编码。自 PHP 5.3.0 起可用。
FILEINFO_MIME (integer) 返回 RFC 2045 定义的 MIME 类型和 MIME 编码。
FILEINFO_COMPRESS (integer) 解压缩压缩文件。由于线程安全问题,自 PHP 5.3.0 起被禁用。
FILEINFO_DEVICES (integer) 查看块或字符特殊设备的内容。
FILEINFO_CONTINUE (integer) 返回所有匹配项,而不仅仅是第一个匹配项。
FILEINFO_PRESERVE_ATIME (integer) 如果可能,请保留原始访问时间。
FILEINFO_RAW (integer) 不要将不可打印的字符转换为 \ooo 八进制表示形式。
FILEINFO_EXTENSION (integer) 返回适合于文件中检测到的 MIME 类型的文件扩展名。对于通常具有多个文件扩展名的类型(如 JPEG 图像),则返回值是用正斜杠分隔的多个扩展名,例如:“jpeg/jpg/jpe/jfif”。对于 magic.mime 数据库中不可用的未知类型,则返回值为 “???”。自 PHP 7.2.0 起可用。

函数列表

以下是 FileInfo 类中可用函数的完整列表 -

函数 描述 PHP
finfo_buffer() 返回有关字符串缓冲区的信息。 5.3.0
finfo_close() 关闭 fileinfo 资源。 5.3.0
finfo_file() 返回有关文件的信息。 5.3.0
finfo_open() 创建新的 fileinfo 资源。 5.3.0
finfo_set_flags() 设置 libmagic 配置选项。 5.3.0
mime_content_type() 检测文件的 MIME 内容类型(已弃用)。 4.3.0
finfo_class() 设置串口的终端属性和波特率。 5.3.0
finfo::_construct() 是 finfo_open() 的别名。 5.3.0