Listar archivos de un directorio web con PHP y XML
Lunes, Octubre 27th, 2008Este 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.
