Leer los archivos de un directorio del servidor con PHP. (Salida XML).

6 Octubre, 2008

Con este código generamos un documento XML con el listado de archivos de determinado directorio del servidor web. Lo único que hay que personalizar es la línea $dir=”ruta/de/la/carpeta/a/explorar”; con la ruta de la carpeta elegida en vuestra máquina.

<?php
header("Content-type: text/xml");
$dir="ruta/de/la/carpeta/a/explorar";
$dr=@opendir($dir);
if(!$dr){
echo "<error/>";
exit;
} else {
echo "<exploracion>";
// recorremos todos los elementos de la carpeta
while (($archivo = readdir($dr)) !== false) {
// comprobamos que sean archivos y no otras carpetas
if(filetype($dir . $archivo)!="dir"){
$tam=round(filesize($dir . $archivo)/1024,0);
echo "<archivo nombre='$archivo' tam='$tam'/>";
}
}
echo "</exploracion>";
closedir($dr);
}
?>


10 comentarios para “Leer los archivos de un directorio del servidor con PHP. (Salida XML).”

  1. Carlos Ramírez on Octubre 27, 2008 8:16 am

    Muchas gracias por compartir el código me ha sido muy útil. En verdad te lo agradezco. Saludos

  2. Maura on Noviembre 22, 2008 5:43 am

    como convertir una imagen a xml

  3. Alejandro on Febrero 20, 2009 7:50 pm

    Tengo una duda. Dice la descripción sobre la ruta de la carpeta es la ruta en mi máquina. Como debe escribirse la ruta si yo he subido las imágenes a un FTP?

  4. admin on Marzo 1, 2009 1:33 pm

    Alejandro, puedes obtener la ruta de un directorio ejecutando este código desde el mismo directorio:
    < ?php
    echo getcwd();
    ?>

  5. bydaface on Marzo 6, 2009 12:32 pm

    Buenas, me ha sido muy util tu código (soy diseñador), pero tengo una duda:
    Al generar el xml, el listado me aparece desordenado, es decir, en vez de 001.jpg,002.jp,003.jps,etc,…
    me aparece un listado con los archivos organizados de forma aleatoria, es decir, 004.jpg,001.jpg,007.jpg, etc,…

    Que podria hacer?

    Muchas gracias.

  6. Marco Avellaneda on Abril 7, 2009 3:10 am

    La ruta debe estar dada con “/” y no alreves “\” y ademas al final debe llevar la ultima “/”
    Saludos

  7. noel on Abril 13, 2009 8:44 pm

    Muchisimas gracias me ah servido de mucha ayuda =)

  8. atmjesus on Mayo 12, 2009 9:47 pm

    para bydaface:

    el readdir devuelve los archivos en el orden en que el S.O. los tiene guardados, para ordenarlos alfabeticamente intenta algo así:

    $dir=”ruta/de/la/carpeta/a/explorar”;
    $dr=@opendir($dir);
    $i = 0;
    $images = array();

    while ($file = readdir($dr)) {
    $images[$i] = $file;
    $i = $i+1;
    }
    sort($images);

    y ya con un for recorres el vector de images y generas las etiquetas xml con el nombre, el tamaño y lo que quieras.

    Saludos!

  9. DrBomb on Mayo 19, 2009 1:49 am

    Alejandro para que no te compliques con la ruta seria mas facil poner en la variable $dir:

    $dir=”getcwd() . ruta/a/explorar(servidor)”

    para que no te enredes colocando toda la ruta hasta la raiz www

  10. kalet on Junio 16, 2009 4:07 am

    hola , alguien podria ayudarme, intento hacer un reproductor web, aun soy pricipiante, pero me perdi por qeu uso la version flash cs4 de adobe, o alguien podria facilitarme un codigo mas simple, por que necesito entregar un trabajo en la prepa, y quiero colocar un reproductor web para mp3

    saludos mi correo es dar-kalet@hotmail.com

    gracias

Trackback URI | RSS de comentarios

Deja tu comentario

Nombre (requerido)

Email (no se muestra, requerido)

Sitio Web

Comentario (requiere moderación)