You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP文件托管项目中列出目录文件的名称、MIME类型、上传日期等信息?

解决PHP获取文件详细信息的方案

首先,scandir会返回.和..这两个特殊目录,第一步要先过滤掉它们。接下来可以用PHP内置函数获取你需要的文件信息:

  • 文件名:直接使用遍历到的文件名(注意拼接完整文件路径)
  • MIME类型:用finfo类,比旧的mime_content_type更可靠、兼容性更好
  • 上传/修改日期:用filemtime获取文件最后修改时间(如果文件上传后未被修改,这个时间就等同于上传时间),再用date格式化输出

完整代码示例

<?php
$uploadDir = 'uploadedfiles';
// 获取目录文件并过滤特殊目录
$files = array_diff(scandir($uploadDir), ['.', '..']);

// 初始化finfo对象用于解析MIME类型
$finfo = new finfo(FILEINFO_MIME_TYPE);

// 用表格展示文件信息
echo '<table border="1">';
echo '<tr><th>文件名</th><th>MIME类型</th><th>上传/修改日期</th></tr>';

foreach ($files as $file) {
    $filePath = $uploadDir . DIRECTORY_SEPARATOR . $file;
    // 跳过子目录(如果存在)
    if (is_dir($filePath)) continue;
    
    $mimeType = $finfo->file($filePath);
    $formattedTime = date('Y-m-d H:i:s', filemtime($filePath));
    
    echo '<tr>';
    echo '<td>' . htmlspecialchars($file) . '</td>';
    echo '<td>' . htmlspecialchars($mimeType) . '</td>';
    echo '<td>' . $formattedTime . '</td>';
    echo '</tr>';
}
echo '</table>';
?>

关键细节说明

  • array_diff:快速过滤掉scandir返回的.(当前目录)和..(上级目录)
  • htmlspecialchars:避免文件名中的特殊字符(如<、>)破坏HTML结构,提升页面安全性
  • DIRECTORY_SEPARATOR:自动适配Windows/Linux的路径分隔符,避免跨系统路径错误

内容的提问来源于stack exchange,提问作者Nick Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:50:43