web-dev-qa-db-fra.com

filesize (): stat a échoué pour un chemin spécifique - php

je code un simple script de gestion de documents et j'ai besoin d'obtenir la taille et le type de fichier/fichier ou dossier/dans un tableau. en quelque sorte, cela ne fonctionne pas dans le répertoire de mention. aidez si possible:

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

il a en fait 2 erreurs - une la taille du fichier ne fonctionne pas pour l'emplacement, si je le change en chemin vers "." - tout va bien, mais si j'essaye de changer dans le dossier où j'en ai besoin/documents ... tout va mal, et deuxièmement - cela ne prend pas aussi le bon fichier d'icône, même type de problème. Merci

9
Ivan M

Le problème est, $file n'est que le nom de fichier sans le préfixe de répertoire, donc le vérifier ne fonctionnera pas. Une façon serait d'avoir une variable avec le nom de fichier absolu (disons $realfile). Vous devrez ensuite modifier votre code et utiliser cette variable pour les vérifications de fichiers:

<?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