Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/02/2018, 12:31
Brujo2
 
Fecha de Ingreso: agosto-2006
Mensajes: 32
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Listar directorio y Sumar Tamaño de Archivos

Uy, le di solución! despues de estar googleando. Bueno tengo que aprender más PHP porque aun estoy muy novato.

Lo que hice fue no declarar en la función la variable $_eltamano. Le hice otros cambios menores pero solo por estetica. y ponerla global $_eltamano. Que no sabia que se podia hacer.

Adicional agregue de una vez para que me muestre el tamaño en KB o MB, no en GB porque yo necesitaba era mostrarle en MB al cliente.

Código PHP:
<?
echo $ruta$_SERVER['DOCUMENT_ROOT'];
echo 
'<br>';
echo 
$_eltamano=0;
echo 
'<hr>';
function 
listar_directorios_ruta($ruta){ // abre funcion
global $_eltamano;
    if (
$dh opendir($ruta)) { // abre opendir
    
while (($file readdir($dh)) !== false) { // abrewile
    
$laruta=$ruta.'/'.$file;
    echo 
'<h3>Archivo a Analizar  '.$laruta.' - Tamano contado hasta aqui: '.$_eltamano.'</h3>';
    if(
$file != '.' && $file!= '..' && !is_link($laruta)){ // pregunta si es archivo o directorio
        
if (is_dir($laruta)){ // es directorio
        
echo "<br>Directorio: $file";
    echo 
' <font color="#00CC33">total contado hasta aqui: '$_eltamano.'</font><br>';
    
listar_directorios_ruta($laruta."/");} // cierra si es directorio
    
else if(is_file($laruta))
    { 
// pregunta si es archivo
    
echo '<br><b>'.$file.' es archivo</b> ';
    
$tamano=filesize($laruta);
    
$_eltamano+=$tamano;
    echo 
'<font color="#3399FF">Tamano del archivo: '.$tamano.'</font> ';
    echo 
'<font color="#FF0000">Total contado hasta aqui: '.$_eltamano.'</font>';
    } 
// cierra si es archivo
    
else{ echo '<br>'.$file.' no es archivo';} // abre cierra si no es nada
// cierra si es directorio o archivo
// cierra while
    
// cierra opendir
closedir($dh);
echo 
'<br><b><font color="#055e74">vamos a retonar este tamano total: '.$_eltamano.'</font></b><hr>';
return 
$_eltamano;
// cierra funcion
echo '<h1>Dato Final de espacio en Bytes: '.$_final=listar_directorios_ruta($ruta).'</h1>';
echo 
'<br>';
function 
sizeFormat($_dirSize)
    {
        if(
$_dirSize 1024)
        {
            return 
$_dirSize." Bytes.";
        }
        else if(
$_dirSize < (1024*1024))
            {
                
$_dirSize round($_dirSize/1024,1);
                return 
$_dirSize." KB.";
            }
            else
            {
                
$_dirSize round($_dirSize/(1024*1024),1);
                return 
$_dirSize 0.1." MB.";
            }

    }    
echo 
sizeFormat($_final);
?>
Un saludo