Foros del Web » Programando para Internet » PHP »

Calcular tamaño ficheros en directorio

Estas en el tema de Calcular tamaño ficheros en directorio en el foro de PHP en Foros del Web. Hola q tal, al calcular el tamaño de los ficheros me sale este error: Warning: filesize(): Stat failed for motorrad_pegatina.jpg (errno=2 - No such file ...
  #1 (permalink)  
Antiguo 18/11/2004, 13:36
 
Fecha de Ingreso: abril-2004
Mensajes: 68
Antigüedad: 20 años, 7 meses
Puntos: 0
Calcular tamaño ficheros en directorio

Hola q tal, al calcular el tamaño de los ficheros me sale este error:

Warning: filesize(): Stat failed for motorrad_pegatina.jpg (errno=2 - No such file or directory) in /home/david/public_html/website/subirfotos.php on line 105

y el codigo q he hecho es este:
.
.
.
while ($elemento = readdir($dir))
{
if ($elemento!="." && $elemento!="..")
{
echo $elemento;
$bytes=filesize($elemento);
$tamano=$tamano+$bytes;
}

}
.
.
.
siendo la linea 105 ($bytes=filesize....), el directorio lo abre bien, al hacer el echo del elemento muestra por pantlla el nombre del fichero perfectamente, ya q en este caso solo existe un fichero

Gracias por anticipado.
Un saludo
__________________
David
www.crosseros.com
  #2 (permalink)  
Antiguo 18/11/2004, 13:47
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

$elemento solo contiene el nombre del fichero, no informacion sobre la ruta. filesize() necesita que le pases el fichero con su ruta, sino intenta buscar el fichero en el directorio actual del script php.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 18/11/2004, 13:48
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 10 meses
Puntos: 0
Tienes que poner el path relativo al hacer el filesize, pq no lo encuentra en el directorio dónde ejecutar el archivo.php:
filesize($dir.'/'.$elemento)

ejctuta esto, y veràs que no estas en el directorio que estas listando:
echo ('getcwd')
  #4 (permalink)  
Antiguo 18/11/2004, 14:23
 
Fecha de Ingreso: abril-2004
Mensajes: 68
Antigüedad: 20 años, 7 meses
Puntos: 0
bueno, esperaba q no me dijeseis eso, pero la verdad q lo veo normal porq no lo he explicado bien....la variable $dir, contiene la ruta del directorio, entonces me imagino q al hacer readdir($dir) y asignarlo a la variable $elemento, esta variable contiene los ficheros, ademas al mostrar por pantalla esta variable muestra perfectamente el nombre del fichero, me entendeis????

gracias....porq puede ser???
__________________
David
www.crosseros.com
  #5 (permalink)  
Antiguo 18/11/2004, 14:25
 
Fecha de Ingreso: abril-2004
Mensajes: 68
Antigüedad: 20 años, 7 meses
Puntos: 0
pongo todo el codigo....

//definimos el path de acceso
$path = "usuarios/$login/fotos";

//abrimos el directorio
$dir = opendir($path);

$tamano=0;
//Mostramos las informaciones
while ($elemento = readdir($dir))
{
if ($elemento!="." && $elemento!="..")
{
echo $elemento;
$bytes=filesize($elemento);
$tamano=$tamano+$bytes;
}

}

echo "tamaño total:$tamano";
__________________
David
www.crosseros.com
  #6 (permalink)  
Antiguo 18/11/2004, 15:38
 
Fecha de Ingreso: abril-2004
Mensajes: 68
Antigüedad: 20 años, 7 meses
Puntos: 0
alguien sabe donde tengo el problema????? pleaseeeeeeee
__________________
David
www.crosseros.com
  #7 (permalink)  
Antiguo 18/11/2004, 15:46
 
Fecha de Ingreso: enero-2004
Mensajes: 235
Antigüedad: 20 años, 10 meses
Puntos: 0
Joder, es que no lees o que? el error lo solucionas con esto: filesize($path.'/'.$elemento)

Última edición por jmaribau; 18/11/2004 a las 15:49
  #8 (permalink)  
Antiguo 18/11/2004, 16:13
 
Fecha de Ingreso: abril-2004
Mensajes: 68
Antigüedad: 20 años, 7 meses
Puntos: 0
ok...pensaba q eso q decias era por otra cosa.....el caso es q me ha funcionado a la primera.

muchas gracias
__________________
David
www.crosseros.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:49.