温馨提示×

php readdir 能获取文件的扩展属性吗

PHP
小樊
82
2024-11-27 12:00:49
栏目: 编程语言

readdir() 函数用于读取目录句柄中的条目,但它本身不能直接获取文件的扩展属性

  1. 首先,使用 opendir() 函数打开目录。
  2. 然后,使用 readdir() 函数读取目录中的每个文件。
  3. 对于每个文件,使用 pathinfo() 函数获取文件扩展名。
  4. 使用 fileinfo 扩展(如果已安装)或 stat 结构来获取文件的扩展属性。

以下是一个示例代码:

<?php
// 打开目录
$dir = opendir('path/to/directory');

if ($dir) {
    // 读取目录中的每个文件
    while (($entry = readdir($dir)) !== false) {
        // 跳过 "." 和 ".." 目录
        if ($entry == '.' || $entry == '..') {
            continue;
        }

        // 获取文件扩展名
        $extension = pathinfo($entry, PATHINFO_EXTENSION);

        // 获取文件扩展属性(需要安装 fileinfo 扩展)
        $finfo = new finfo(FILEINFO_MIME_TYPE);
        $mimeType = $finfo->file($entry);

        // 或者使用 stat 结构获取文件扩展属性(不依赖 fileinfo 扩展)
        $stat = stat($entry);
        $attributes = array(
            'size' => $stat['size'],
            'mtime' => $stat['mtime'],
            // 其他属性...
        );

        // 输出文件信息
        echo "File: $entry\n";
        echo "Extension: $extension\n";
        echo "MIME type: $mimeType\n";
        echo "Attributes: " . print_r($attributes, true) . "\n\n";
    }

    // 关闭目录
    closedir($dir);
} else {
    echo "Error: Unable to open directory.";
}
?>

请注意,这个示例代码需要 fileinfo 扩展(在 PHP 5.3 及更高版本中默认可用)来获取文件的 MIME 类型。如果你的服务器没有启用 fileinfo 扩展,你可以考虑使用其他方法(如 exif_open())来获取特定类型的文件属性。

0