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

0

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

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

?>
    
asked by anonymous 03.05.2018 / 00:52

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/>"; 
}
    
03.05.2018 / 01:44