Todos los archivos de una carpeta junto con su extensión y tamaño en php
Siguiendo con los scripts dedicados a listar ficheros dada una carpeta en PHP. Esta función devuelve todos los ficheros en una tabla, junto con su extensión y su tamaño. Yo suelo mostrar este tipo de listados en carpetas sobre las que los usuarios de la aplicación tienen acceso y han subido documentos. Puesto que sólo pueden subir ciertos tipos de documentos, la lista de extensiones es bastante limitada; así que en la columna ¨Ext¨ muestro tanto el texto identificativo de la extensión como un icono asociado a dicha extensión. De este modo la cosa queda un poco más visual.
function listar_ficheros ($carpeta){
// Comprobamos que la carpeta existe
if (is_dir ($carpeta)){
// Escaneamos la carpeta usando scandir
$scanarray = scandir ($carpeta);
echo ¨<table>
<tr>
<td><strong>Nombre</strong></td>
<td><strong>Ext</strong></td>
<td><strong>Tamaño</strong></td>
</tr>¨;
for ($i = 0; $i < count ($scanarray); $i++){
// Eliminamos ¨.¨ and ¨..¨ del listado de ficheros
if ($scanarray[$i] != ¨.¨ && $scanarray[$i] != ¨..¨){
// No mostramos los subdirectorios
if (is_file ($carpeta . ¨/¨ . $scanarray[$i])){
// Verificamos que la extension se encuentre en $tipos
echo ¨<tr>¨;
$thepath = pathinfo ($carpeta . ¨/¨ . $scanarray[$i]);
echo ¨<td>¨.$scanarray[$i].¨</td>¨;
echo ¨<td>¨.$thepath[´extension´].¨</td>¨;
echo ¨<td>¨.formato_tam (filesize ($carpeta . ¨/¨ . $scanarray[$i]));
echo ¨</tr>¨;
}
}
}
echo ¨</table>¨;
} else {
echo ¨La carpeta no existe¨;
}
}
function formato_tam ($size, $precision = 0) {
$sizes = array (´Tb´, ´Gb´, ´Mb´, ´Kb´, ´bytes´);
$total = count ($sizes);
while ($total-- && $size > 1024) $size /= 1024;
return round ($size, $precision).¨ ¨.$sizes[$total];
}
Un ejemplo de uso sería:
<?php
echo listar_ficheros (¨nombre_carpeta¨);
?>
Lo que devolvería algo como:
Nombre Ext Tam
Images.rar rar 48 Mb
JQuery.zip zip 14 Kb
JQueryCollapse.html html 1 Kb
JsTableSorter.html html 5 Kb
Modelo Carpeta Ejecutiva.doc doc 103 Kb