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.