Comunidad de diseño web y desarrollo en internet online

Listar archivos de un directorio web con PHP y XML

Este es un sencillo script de PHP que nos permite generar un archivo XML con el listado de todos los archivos y carpetas que esten contenidos dentro del directorio en el que hemos situado el archivo PHP.

Esto nos puede resultar útil para realizar galerías fotográficas en las que queremos acceder a todas las imágenes de un directorio y queremos poder subir o borrar archivos. El archivo XML siempre estará actualizado a los ficheros del servidor.

El archivo PHP es el siguiente. Lo llamaremos list.php y lo subiremos al servidor dentro de la carpeta que nos interese listar.

Código :

<?php
   $dir = "./";
   
   echo "<XML encoding='UTF-8' standalone='yes' version='1.0'>\n";
   echo "  <folder>\n";
   
   if (is_dir($dir))
   {
       if ($gd = opendir($dir))
      {
           while (($archivo = readdir($gd)) !== false)
         {
            if ($archivo != "." & $archivo != ".." & $archivo != "list.php")
            {
               if (is_dir($archivo))
               {
                     echo "    <folder>$archivo</folder>\n";
               }
               else
               {
                     echo "    <file>$archivo</file>\n";
               }
            }
           }
           closedir($gd);
       }
   }
   
   echo "  </folder>\n";
   echo "</XML>\n";
?>

El script lo único que hace es recorrer todos los elementos de la carpeta en la que está situado y a base de "echos" formatea el XML.

Si visualizamos este archivo desde el navegador y miramos el código resultante este sería un archivo XML de este estilo:

Código :

<XML encoding='UTF-8' standalone='yes' version='1.0'>
  <folder>
    <file>img_001.jpg</file>
    <file>img_002.jpg</file>
    <file>img_003.jpg</file>
    <file>img_004.jpg</file>
    <file>img_005.jpg</file>
    <folder>thumbs</folder>
    <folder>hires</folder>
  </folder>
</XML>


De esta manera si quisiésemos, por ejemplo, listar el contenido de imágenes disponibles de este directorio dentro de un componente List de Flash haríamos lo siguiente:

Código :

import fl.data.DataProvider;

var _URLLoader = new URLLoader();
var _URLRequest = new URLRequest();

_URLRequest.url = "/img/list.php";
_URLLoader.load(_URLRequest);
_URLLoader.addEventListener(Event.COMPLETE, onListComplete);

function onListComplete(e:Event):void
{
   var xml:XML = new XML(e.target.data);
   var xmlList:XMLList = xml.folder.file;
   var dataProvider = new DataProvider();
   for each (var item in xmlList)
   {
      dataProvider.addItem({label:item});
   }
   listado.dataProvider = dataProvider;
}


Cargamos el archivo PHP como si de un XML se tratase, y de ahí lo convertimos en el dataProvider del componente.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate