Add size column (Mb) in php script that lists directory files

Asked

Viewed 79 times

0

This php script lists files in directory, would like to add the file size column in Mb, but am not succeeding, follow script:

<?php

$path = "arquivos/";

// Título
echo "<h2>Lista de Arquivos:</h2><br />";

// Abre a tabela, cria títulos
echo "<table>";
echo "<tr> <th>Nome</th> 
           <th>Tamanho</th>
</tr>";

// Loop que gera registros
foreach (new DirectoryIterator($path) as $fileInfo) {

    if($fileInfo->isDot()) continue;

    // Imprime linhas de registros
    echo "<tr>

          <td>
          <a href='".$path.$fileInfo->getFilename() ."'>".$fileInfo->getFilename()."</a><br/>
          </td>
          <a >".filesize($fileInfo->getFilename())."</a><br/>

          </tr>";
}

// Fecha a tabela
echo "</table>";

?>

1 answer

1


Example in your code:

// Loop que gera registros 
foreach (new DirectoryIterator($path) as $fileInfo) { 

    if($fileInfo->isDot()) continue; 

    // Pega a quantidade de bytes do arquivo, setando a variável $fs
    $fs = $fileInfo->getSize(); 

    // Imprime células de registros

    echo "<tr><td> 
    <a href='".$path.$fileInfo->getFilename() ."'>".$fileInfo->getFilename()."</a><br/>
    </td><td>"; 

    // Faz um if, para não trazer tamanho 0 caso for menos que 1 kb
    if (($fs /1024 /1024) > 1) { // Tenta converter para mb, se ficar maior que 0, imprime, se não passa para a próxima condição
        echo round($fs /1024 /1024,2) . "mb"; 
    } else if (($fs /1024) > 1) { // Tenta converter para kb, se ficar maior que 0, imprime, se não imprime em bytes
        echo round($fs /1024,2) . "kb"; 
    } else { 
        echo $fs . "bytes"; 
    }

    echo "</td></tr><br/>"; 
}
  • working perfectly!

  • script working: http://educar.esy.es/installers/

  • 1

    I changed the second IF, with only one division /1024 for kb. Hit your.

  • Settled and settled!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.