文件大小():特定路径的统计失败 - php
filesize(): stat failed for specific path - php
我正在编写一个简单的文档管理脚本,需要在 table 中获取文件大小和文件类型/文件或文件夹/。不知何故,它不适用于提及目录。如果可能请帮忙:
<?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 ... 一切都会变坏,其次 - 它也没有采用正确的图标文件,同样类型的问题。
谢谢
问题是,$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(Array("\n", "\r", "\n\r"), '', $f);
这是读取文件内容的常见问题。
我正在编写一个简单的文档管理脚本,需要在 table 中获取文件大小和文件类型/文件或文件夹/。不知何故,它不适用于提及目录。如果可能请帮忙:
<?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 ... 一切都会变坏,其次 - 它也没有采用正确的图标文件,同样类型的问题。 谢谢
问题是,$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(Array("\n", "\r", "\n\r"), '', $f);
这是读取文件内容的常见问题。