filesize():对于特定路径php,stat失败


filesize(): stat failed for specific path - php

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

    <?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>";
}
?>

它确实有两个错误-一个是文件大小不适用于位置,如果我将其更改为路径"."-一切都可以,但如果我试图更改到我需要它/文档的文件夹。。。一切都很糟糕,其次,它也没有使用正确的图标文件,这是同样类型的问题。感谢

问题是,$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>";
}
?>

如果有人仍然遇到这个错误,并且最重要的答案对你不起作用。那一定是因为文件路径中有一个特殊字符,例如''r''n或

尝试:

$f=str_replace(数组("''n","''r","''n''r"),",$f);

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