Bienvenid@s a ver tutoriales.com, en esta ocasión os traigo un código PHP para listar los archivos (ficheros) de un directorio.
Como vereis, es muy simple de utilizar y de entender, este código es utilizable por ejemplo para un gestor de archivos o imagenes. Recogiendo las imagenes de la carpeta y poniendo la opción de eliminar o cualquier cosa que se os ocurra.
En el ejemplo, solo vamos a listar todas las imagenes jpg que existan dentro del directorio que seleccionemos.
Sin más preambulos, os dejo el código y lo comentamos:
<?
//Asignamos la ruta a la variable path
$path=»./direccion/»;
//asignamos a $directorio el objeto dir creado con la ruta
$directorio=dir($path);//y ahora lo vamos leyendo hasta el final
while ($archivo = $directorio->read())
{
//
if($archivo!=».» AND $archivo!=»..»)
//ponemos el nombre de archivo a minuscula y recojemos solo los tres caracteres por la izquierda
//para saber la extensión
if (strtolower(substr($archivo, -3) == «jpg»))
{
//si es jpg,lo mostramos por pantalla
echo «$archivo <br>»;
}
}
}
//descargo el objeto
$directorio->close();
?>
Pues poco más que explicar, espero que este pequeño código os ayude como a mí para el gestor de imagenes.
Un saludo!
priscila 28 febrero, 2011
Excelente ayuda! Gracias
VideoTutoriales 28 febrero, 2011
De nada 🙂
Javier 2 junio, 2011
oye y donde esta la función right?
VideoTutoriales 2 junio, 2011
¿la función right para qué?
Miguel 8 agosto, 2011
Saludos,
Una pregunta como muestro eso en un html???
Estoy empezando y quisiera ayuda.
El objetivo que tengo es:
Tengo una carpeta en donde existen varios PDF, y un html en donde quiero que se muestre el listado de archivos y se puedan descargar….
VideoTutoriales 8 agosto, 2011
Pues no conlleva mucho cambio en el código expuesto, lo primero sería cambiar el «jpg» por «pdf» para que muestre solamente los pdf, y para la descarga solo sería poner un enlace hacia estos, es decir, deberás de cambiar la linea:
echo «$archivo «;
por esta otra:
echo ».$archivo.»;
Con ese código debe de ser suficiente.
Ya me cuentas, un saludo!
VideoTutoriales 7 septiembre, 2011
He modificado una parte del código ya que como preguntaban en un comentario la función right no la tiene php, así que la manera sería utilizar substr($archivo, -3)
Así se simula la función 😉
Un saludo!
roni 14 octubre, 2011
a mi me da error en la linea if strtolower (substr($archivo, -3) != «jpg»))
y al final un corchete cerrado tambien lo lee como error
VideoTutoriales 14 octubre, 2011
Mira que quede como esto:
if (strtolower(substr($archivo, -3) == «jpg»))
Lo del corchete no sé cual es, si quieres pega el código y lo vemos.
Un saludo!
Villa Gesell 15 mayo, 2012
excelente articulo, gracias
VideoTutoriales 15 mayo, 2012
Nada 🙂
miguel 21 junio, 2012
oye tengo nun inconveniente acerca de el tema de descargar pdf … no me descargar uiero que me muetsre el listado de los pdf que tengo en la carpeta del directorio pero no me descargar cambiar la funcion con esta :
Pues no conlleva mucho cambio en el código expuesto, lo primero sería cambiar el “jpg” por “pdf” para que muestre solamente los pdf, y para la descarga solo sería poner un enlace hacia estos, es decir, deberás de cambiar la linea:
echo “$archivo “;
por esta otra:
echo ‘‘.$archivo.’‘; esta es la linea que no me funciona
tienes una solucion a esto mira te dejo mi codigo
read())
{
//
if($archivo!=».» OR $archivo!=»..»)
//ponemos el nombre de archivo a minuscula y recojemos solo los tres caracteres por la izquierda
//para saber la extensión
if (strtolower(substr($archivo, -3) == «pdf»))
{
//si es jpg,lo mostramos por pantalla
echo «.$archivo. «;
}
}
//descargo el objeto
$directorio->close();
?>
VideoTutoriales 21 junio, 2012
Ponla sin las comillas:
echo $archivo;
Miguel 26 octubre, 2012
Buenas al listar los archivos me salen caracteres extraños en vez de tildes y eñes, tengo los caracteres en utf 8, que puedo hacer?
VideoTutoriales 26 octubre, 2012
Cambia si puedes por una codificación genérica.
peter 26 octubre, 2012
Bueno para los que deseen mostrar y al mismo tiempo descargar el archivo el código sería:
en lugar de:
echo “$archivo ”;
coloquen:
echo "< a href='directorio/$archivo' rel="nofollow" >$archivo< /a >" . "";
jorge 27 octubre, 2012
una pregunta, todo me sale bien, pero si yo quisiera agregarle la funcion de ademas de mostrar el archivo y descargarlo, tambien que se muestre el tamaño del archivo y la ultima vez que fue modificado??? estoy tratando con:
read())
{
//
if($archivo!=».» OR $archivo!=»..»)
//ponemos el nombre de archivo a minuscula y recojemos solo los tres caracteres por la izquierda
//para saber la extensión
if (strtolower(substr($archivo, -3) == «jpg»))
{
//funcion para obtener tamaño
function tamano_archivo($peso , $decimales = 2 ) {
$clase = array(» Bytes», » KB», » MB», » GB», » TB»);
return round($peso/pow(1024,($i = floor(log($peso, 1024)))),$decimales ).$clase[$i];
}
$peso_archivo = filesize($archivo); // obtenemos su peso en bytes
//si es jpg,lo mostramos por pantalla
echo «$archivo » . tamano_archivo($peso_archivo) .»»;
}
}
//descargo el objeto
$directorio->close();
?>
me muestra el nombre del archivo y me da opción a descargarlo, pero no me muestra el tamaño me sale error:
Warning: filesize() [function.filesize]: stat failed for nombre_del_archivo.jpg in /home/public_html/web/noticias/index.php on line 128
Warning: Division by zero in /home/public_html/web/noticias/index.php on line 125
nombre_del_archivo.jpg 0
Quien me puede ayudar??
VideoTutoriales 28 octubre, 2012
A la función tendrás que pasarle la ruta completa, seguramente está intentando abrir un fichero que no encuentra y de paso pues está dividiendo por 0, ya que al no tener «peso» este es 0.
Pásale la ruta completa y nos cuentas.
Un saludo!
jorge 28 octubre, 2012
Ya lo intente y me bota error, dime como lo harías tu? mostrar un listado de los archivos que se encuentran en esa carpeta y ademas cuanto pesa cada archivo??? se los agradecería bastante!
VideoTutoriales 28 octubre, 2012
Buenas jorge, sin revisar el código te paso un artículo que acabo de escribir para solventar el problema:
http://www.vertutoriales.com/index.php/mostrar-tamano-de-un-archivo-o-fichero-en-php-con-filesize/
La función que tienes en realidad lo que hace es «manipular» el número para devolver un valor formateado, eso se puede hacer de muchas maneras, pero lo importante que necesitas está en el artículo de mostrar tamaño de un archivo que te anexaba más arriba.
Espero que te sirva! si tienes más dudas compártelas 🙂
Invitado 16 diciembre, 2012
Me gustaria saber como puedo hacer si quiero que me indexe no solo los directorios de una carpeta, sino tambien los del contenido de las carpetas que existan dentro de este, las de dentro de estas y asi sucesivamente, lo que seria enlistar todo el contenido, un saludo.
Gaby 26 diciembre, 2012
Hola estoy tratado de mostrar unos archivos pdf que tengo en un directorio de mi servidor, pero cuando cargo la pag me pone la pantalla en gris y dice «SE HA PRODUCIDO UN ERROR AL CARGAR EL DOCUMENTO PDF». Y el codigo que tengo es el siguiente:
$dir = «pdf/».$idpac.»/».$visita;
$dh = opendir($dir);
while (false !== ($nombre_archivo = readdir($dh))) {
$archivos[] = $nombre_archivo;
}
$total_archivos = count($archivos);
$total = $total_archivos-2;
//TERMINA DE CONTAR
//echo(«UN TOTAL DE PDF´S » + $total);
$directorio=dir($dir);
while ($archivo = $directorio->read())
{
//
if($archivo!=».» OR $archivo!=»..»){
if (strtolower(substr($archivo, -3) == «pdf»))
{//si es jpg,lo mostramos por pantalla
echo «$archivo «;
}
}
}
//descargo el objeto
$directorio->close();
?>
espero me puedan ayudar, gracias y saludo!!!
VideoTutoriales 27 diciembre, 2012
Prueba a pasarle la ruta $dir completa a mano, por ejemplo $dir =»./pdf/10/» o el directorio que sepas que ya existe a ver que te hace. En principio debería de mostrar el directorio, pero si te está dando algún problema puede ser por la ruta.
El error de que no puede mostrar el PDF no tiene mucho sentido, ya que lo único que estás pasando es un filtro de extensiones. Así que no debería de cargar el PDF.
Saludos!
Ezan 3 diciembre, 2018
Como aporte. En la línea:
if($archivo!=”.” OR $archivo!=”..”){…..}
Se usa para evitar que liste el . y .. que referencia al directorio actual y al padre, y sólo liste documentos en el directorio. Pues bien, no es un OR sino un AND lo que hay que poner en la comparación, o siempre cumplirá la condición y seguirá mostrando el . y el ..
Carlos Dk 3 diciembre, 2018
mmmm gracias! 🙂