【问题标题】:filesize(): stat failed for specific path - php文件大小():特定路径的统计失败 - php
【发布时间】:2016-04-01 14:31:03
【问题描述】:

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

    <?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 个错误 - 一个文件大小不适用于该位置,如果我将其更改为“。”的路径- 一切都很好,但是如果我尝试更改到我需要它的文件夹 /documents ...一切都会变糟,其次 - 它也没有使用正确的图标文件,同样类型的问题。 谢谢

【问题讨论】:

  • $path = "../documents";
  • 试过了,但它完全失去了它../doc不起作用

标签: php filesize stat


【解决方案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>";
}
?>

【讨论】:

  • 哇!谢谢你,简 - 做到了 - 太棒了!祝兄弟假期愉快!
  • 这是左边的绿色复选标志吗?正确的?我想现在已经检查过了。谢谢。我正在与另一个具有相同代码的“小”prbm 战斗-尝试提供选项以下载文件(一个 href url)或打开,以防它是带有 php opendir() 或类似文件的目录(文件夹)。你能给我一些想法吗?
  • 是的,确实是左边的绿色对勾。使用 is_dir() 检查目录
【解决方案2】:

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

试试:

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

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

【讨论】:

  • 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review
猜你喜欢
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多