web-dev-qa-db-ja.com

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つのエラーがあります-1つは「。」へのパスに変更すると、ファイルサイズが場所に対して機能しません-すべては大丈夫ですが、必要なフォルダに変更しようとすると/ documents ...すべてが悪くなり、2番目に-適切なアイコンファイルも同じタイプの問題になりません。ありがとうございました

9
Ivan M

問題は、$fileはディレクトリプレフィックスなしのファイル名のみであるため、チェックは機能しません。 1つの方法は、絶対ファイル名(たとえば、$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>";
}
?>
11
Jan