Listar directorios y subdirectorios en PHP

Vamos a explicar cómo recorrer directorios a dos niveles.
En el primer nivel solo existen carpetas (no archivos) y en el segundo nivel existen imágenes, archivos…
En el primer nivel no leeremos archivos, solo carpetas y en el segundo nivel leeremos los archivos.

Lo primero que debemos hacer es llamar a una función pasándole la ruta donde queremos comenzar nuestro recorrido.

  • Primera función que recorrerá el primer nivel de carpetas.
 
//A continuación le pasamos a la función el nombre de la carpeta "padre" donde queremos comenzar a leer
 
echo listar_carpetas($carpetaInicial);
 
function listar_carpetas($carpeta) {
//le añadimos la barra a la carpeta que le hemos pasado
$ruta = $carpeta . "/";
 
//pasamos a minúsculas (opcional)
$ruta = strtolower($ruta) ;
 
//comprueba si la ruta que le hemos pasado es un directorio
if(is_dir($ruta)) {
//fijamos la ruta del directorio que se va a abrir
if($dir = opendir($ruta)) {
//si el directorio se puede abrir
while(($archivo = readdir($dir)) !== false) {
//le avisamos que no lea el "." y los dos ".."
if($archivo != '.' && $archivo != '..') {
//comprobramos que se trata de un directorio
if (is_dir($ruta.$archivo)) {
//si efectivamente es una carpeta saltará a nuestra próxima función
leer_carpeta($ruta.$archivo);
} } }
//cerramos directorio abierto anteriormente
closedir($dir);
} } }
  • Segunda función que recorrerá los subdirectorios.
 
//recogemos  la ruta para entrar en el segundo nivel
function leer_carpeta($leercarpeta) {
//le añadimos la barra final
$leercarpeta = $leercarpeta . "/";
 
if(is_dir($leercarpeta)){
if($dir = opendir($leercarpeta)){
while(($archivo = readdir($dir)) !== false){
if($archivo != '.' && $archivo != '..') {
/* imprimimos el nombre del archivo, si quisieramos podriamos poner en este punto por ejemplo un enlace 
al archivo para que se abriera una imagen o un PDF al hacer click encima del nombre. */
echo $archivo; } }
 
closedir($dir);
} } }

Se pueden hacer todos los niveles que uno quiera, si quisieramos tener un tercer nivel lo único que tendriamos que hacer es crear una nueva función que será por ejemplos carpeta_tercer_nivel() y que debemos colorcarlo dentro del bucle del nivel dos.

Iván Martínez

Ingeniero Informático apasionado por el mundo del desarrollo WEB. Me gusta caminar por este mundo lleno de tecnologías y día a día aprender cosas nuevas como el doctor Frankenstein ¡dadme cosas para experimentar!

Un comentario en «Listar directorios y subdirectorios en PHP»

  • el Oct 12, 2020 a las 3:56 pm
    Enlace permanente

    Hola Como estás, estoy estudiando y se me presentó un problema. Mi proyecto, consta de a partir de un formulario donde ya tengo datos guardados en variables como el nombre de usuario, numoro de legajo,,, etc..
    El usuario debe levantar desde su ordenador 3 archivos para enviarlos a un directorio al servidor, dentro de una de 2 subcarpetas que debo generar con mi script sí estas no existen.. todo eso está correcto y mal o bien lo solucioné.
    Mi problema nace de saber como puedo brindar permisos a una de la 2 subcarpetas para que el usuario luego de escribir en ella deje de tener permisos de escritura para que otro usuario del servidor pueda gestionar los documentos que envía?
    estoy utilizando MySql, PHP y el formulario es envíado a través de POST

    Respuesta

Deja una respuesta

Tu dirección de correo electrónico no será publicada.