filesize(): 特定路径的统计失败 - php

2022-08-30 23:35:11

我正在编写一个简单的文档管理脚本,需要在表格中获取文件大小和文件类型/文件或文件夹/。不知何故,它无法进入提及目录。如果可能的话,请帮忙:

    <?php
$path = "./documents";
$dh = dir($path);
while( ($file=$dh->read()) ) 
{
    if( $file=="." || $file=="..")continue;
    echo "<tr><td><a href='download.php?f=$file' title='Click to Open/Download'>$file</a></td>";
    echo "<td>";
    echo (is_file($file))? "<img src='file.jpg'/> FILE" : "<img src='folder.jpg'/> FOLDER ";
    echo "</td><td>" .filesize($file)."</td>";
    echo "<td><input type='checkbox' name='delete[]'/></td></tr>";
}
?>

它实际上确实有2个错误 - 一个文件大小不适用于该位置,如果我将其更改为路径为“.” - 一切都很好,但如果我尝试更改为我需要它的文件夹/文档...一切都很糟糕,其次 - 它也不采用正确的图标文件,相同类型的问题。谢谢


答案 1

问题是,只有文件名没有目录前缀,所以检查它不起作用。一种方法是使用具有绝对文件名的变量(例如 )。然后,您必须更改代码并使用此变量进行文件检查:$file$realfile

<?php
$path = "./documents";
$dh = dir($path);
while(($file=$dh->read()) !== false) {
    if( $file=="." || $file=="..") continue;
    // have a new variable for the real filepath
    $realfile = $path . "/" . $file;
    echo "<tr><td><a href='download.php?f=$file' title='Click to Open/Download'>$file</a></td>";
    echo "<td>";
    echo (is_file($realfile))? "<img src='file.jpg'/> FILE" : "<img src='folder.jpg'/> FOLDER ";
    echo "</td><td>" .filesize($realfile)."</td>";
    echo "<td><input type='checkbox' name='delete[]'/></td></tr>";
}
?>

答案 2

如果有人仍然遇到此错误,并且顶部答案对您不起作用。那么它必须是因为您的文件路径中有一个特殊字符,即\r或\n

尝试:

$f = str_replace(Array(“\n”, “\r”, “\n\r”), '', $f);

这是读取文件内容的常见问题。


推荐