Todos los archivos de una carpeta junto con su extensión y tamaño en PHP

0 - , - 05/02/2009 11:30:00

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.rarrar48 Mb
JQuery.zipzip14 Kb
JQueryCollapse.htmlhtml1 Kb
JsTableSorter.htmlhtml5 Kb
Modelo Carpeta Ejecutiva.docdoc103 Kb
.....  

Deja tu comentario

  • El comentario debe estar relacionado con el contenido de la entrada.
  • Comentarios ofensivos, con spam o con lenguaje inapropiado serán eliminados.

captcha