Home » AS3 »Básico »Flash »Php » Currently Reading:

Listar archivos de un directorio web con PHP y XML

octubre 27, 2008 AS3, Básico, Flash, Php 8 Comments
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.

  1. <?php
  2.     $dir = "./";
  3.    
  4.     echo "<XML encoding='UTF-8' standalone='yes' version='1.0'>\n";
  5.     echo "  <folder>\n";
  6.    
  7.     if (is_dir($dir))
  8.     {
  9.         if ($gd = opendir($dir))
  10.         {
  11.             while (($archivo = readdir($gd)) !== false)
  12.             {
  13.                 if ($archivo != "." & $archivo != ".." & $archivo != "list.php")
  14.                 {
  15.                     if (is_dir($archivo))
  16.                     {
  17.                         echo "    <folder>$archivo</folder>\n";
  18.                     }
  19.                     else
  20.                     {
  21.                         echo "    <file>$archivo</file>\n";
  22.                     }
  23.                 }
  24.             }
  25.             closedir($gd);
  26.         }
  27.     }
  28.    
  29.     echo "  </folder>\n";
  30.     echo "</XML>\n";
  31. ?>

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:

  1. <XML encoding='UTF-8' standalone='yes' version='1.0'>
  2.   <folder>
  3.     <file>img_001.jpg</file>
  4.     <file>img_002.jpg</file>
  5.     <file>img_003.jpg</file>
  6.     <file>img_004.jpg</file>
  7.     <file>img_005.jpg</file>
  8.     <folder>thumbs</folder>
  9.     <folder>hires</folder>
  10.   </folder>
  11. </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:

  1. import fl.data.DataProvider;
  2.  
  3. var _URLLoader = new URLLoader();
  4. var _URLRequest = new URLRequest();
  5.  
  6. _URLRequest.url = "/img/list.php";
  7. _URLLoader.load(_URLRequest);
  8. _URLLoader.addEventListener(Event.COMPLETE, onListComplete);
  9.  
  10. function onListComplete(e:Event):void
  11. {
  12.     var xml:XML = new XML(e.target.data);
  13.     var xmlList:XMLList = xml.folder.file;
  14.     var dataProvider = new DataProvider();
  15.     for each (var item in xmlList)
  16.     {
  17.         dataProvider.addItem({label:item});
  18.     }
  19.     listado.dataProvider = dataProvider;
  20. }

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

Compártelo:

Listar archivos de un directorio web con PHP y XML
Visto 14.545 veces

Currently there are "8 comments" on this Article:

  1. Rafeo dice:

    Gracias Zguillez, muy útil, cuando se presente la oportunidad de usarlo no dudaré en copiártelo :p.

  2. sergio dice:

    hola estoy probando el codigo par alistar archivo pero no funciona o algo no ago vien cargo es earchivo en el directorio que quero mostrar a rchivos pero no anda me da error
    le agradeceria me ayude un saludo

  3. Algunas veces los nombres de los archivos pueden contener caracteres como ‘&’ o por ejemplo comilla simple.

    Vale la pena reemplazar los caracteres que pueden tener problemas en un xml, es decir:

    function ReemEntidadesXML($string){
    return strtr($string,array(
    ‘&’ => ‘&’,
    ‘>’ => ‘>’,
    ‘ ‘<‘,
    ‘”‘ => ‘"’,
    ‘\” => ‘'’ ));
    }

    y por si tienen acentos o Ñ también vale la pena ponerle un
    $archivo = utf8_encode(ReemEntidadesXML($archivo));

  4. Keison dice:

    Zguillez como puedo hacer para listar tambien los subdirectorios dentro de la carpeta? y generar esto mismo en el XML. He intentado modificar algo el codigo pero no logro hacerlo, a ver si me ayudas.

    Saludos

  5. Podrías hacerlo con una función recursiva (nota el código está incompleto solo es la idea)

    function GeneraDirectorio($dir,$str){
    if (is_dir($dir))
    {
    if ($gd = opendir($dir))
    {
    while (($archivo = readdir($gd)) !== false)
    {
    if ($archivo != “.” & $archivo != “..” & $archivo != “list.php”)
    {
    if (is_dir($archivo))
    {
    $str.= $archivo\n”;
    //LLAMAMOS A LA MISMA FUNCIÓN
    $str = GeneraDirectorio($archivo, $str.)
    }
    else
    {
    $str .= ” $archivo\n”;
    }
    }
    }
    closedir($gd);
    }
    }
    }

  6. Podrías hacerlo con una función recursiva (nota el código está incompleto solo es la idea)

    function GeneraDirectorio($dir,$str){
    if (is_dir($dir))
    {
    if ($gd = opendir($dir))
    {
    while (($archivo = readdir($gd)) !== false)
    {
    if ($archivo != “.” & $archivo != “..” & $archivo != “list.php”)
    {
    if (is_dir($archivo))
    {
    $str.= $archivo\n”;
    //LLAMAMOS A LA MISMA FUNCIÓN
    $str = GeneraDirectorio($archivo, $str.)
    }
    else
    {
    $str .= ” $archivo\n”;
    }
    }
    }
    closedir($gd);
    }
    }
    return $str;
    }

  7. Javi dice:

    Como se puede traducir la parte de AS3 a AS2… Gracias

  8. jsteban dice:

    Salu2, existe alguna manera de listar solo algunos archivos del directorio ?? usando comodines como en DOS o algo asi.
    Por ejemplo, si quisiera listar solo los archivos qui comienzan por ” fil” hacer algo así Fil*.*
    Muchas Gracias.

Comment on this Article:








Twitter: zguillez

AdvertisementAdvertisementAdvertisementAdvertisement

Recibe las novedades por email



Map

Ranking

Codigoactionscript.org: 4.65 sobre 5 (106 valoraciones)

twitter-widget.com