2015-12-27 43 views
3

我正在编写一个简单的文档管理脚本,需要获取文件大小和文件类型/文件或文件夹/在表中。不知何故,它不适用于提及目录。请帮助如果可能的话:filesize():统计失败的特定路径-php

<?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个错误 - 一个文件大小不适合的地方工作,如果我将其更改为路径“” - 一切正常,但如果我尝试更改文件夹,我需要它/文件...一切都变糟,其次 - 它不采取正确的图标文件以及相同类型的问题。 谢谢

+0

'$ PATH =“../文件”;' – underscore

+0

尝试,但它失去了它完全../doc不工作 –

回答

3

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

哇!谢谢你 - 简直就是这样 - 太棒了!有一个很好的假期时间兄弟! –

+0

这是左边的绿色检查标志?对?我认为它现在被检查。谢谢。我正在与另一个'小'prbm与相同的代码 - 试图让下载文件(一个href网址)或打开的情况下,如果它是一个目录(文件夹)与PHP opendir()或类似的选项。你能给我一些想法吗? –

+0

是的,的确,这是左边的绿色检查。用is_dir()检查目录 – Jan

相关问题