Leer los archivos de un directorio del servidor con PHP. (Salida XML).
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);
}
?>
29 comentarios para “Leer los archivos de un directorio del servidor con PHP. (Salida XML).”
Deja tu comentario

Muchas gracias por compartir el código me ha sido muy útil. En verdad te lo agradezco. Saludos
como convertir una imagen a xml
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?
Alejandro, puedes obtener la ruta de un directorio ejecutando este código desde el mismo directorio:
< ?php
echo getcwd();
?>
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.
La ruta debe estar dada con “/” y no alreves “\” y ademas al final debe llevar la ultima “/”
Saludos
Muchisimas gracias me ah servido de mucha ayuda =)
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!
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
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
Quisiera hacerles una consulta, pueden por favor poner este codigo de la la Galeria, en PHP ya que esta en ASP, y yo casi no entiendo ASP, ya que empeze con PHP, soy alguien que esta empezando a programar, agradeceria a la persona que me envie todo este codigo, pero en PHP. De antemano mil gracias y que Dios los bendiga.
Saludos Monica
Hola, estoy intentando aprender a crear el xml con los datos de un directorio… he hexho todo lo k pone aki y al ver como actua el archivo .php en firebug veo k me lee bien los datos con los nombres.. pero como deberia hacer para exportar eso y que me cree el archivo xml???
GRACIAS a todos por la ayuda!
hola soy nuevo en php!
me dice k tengo este error como lo ssoluciono?
Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\gabriel\prueba\index.php:13) in C:\AppServ\www\gabriel\prueba\index.php on line 21
La línea
header(”Content-type: text/xml”);
debe ir al principio del documento PHP ¿está en la línea 21?
Hola que tal…,
espero que esten bien
tengo un problema
trato de hacer funcionar el php,
que facilitaron arriba y no me funcionar
me tira un error, para la linea 9,
la cual lleva la siguiente programacion.
(”Content-type:text/xml”);
no entiendo porque no me funciona.
ayuda porfavor!!
saludos cordiales
Muchas gracias por tu ayuda pero tengo un problema, me muestra el archivo muy raro no se que debo hacer para que se vea bien. Mira se ve asi:
exploracion>
Warning
: filetype() [
function.filetype
]: Lstat failed for minisave.jpg in
C:\wamp\www\galeriaFLASH\verMiniaturas.php
on line
13
Warning
: filesize() [
function.filesize
]: stat failed for minisave.jpg in
C:\wamp\www\galeriaFLASH\verMiniaturas.php
on line
14
Ademas quisiera preguntarte como hago para exportar el XML
De antemano muchas gracias.
Perdon, ya corregi el erro; estaba pasando los parametros malos al filesize. Gracias de verdad
Muchas gracias muy útil.
Hola, Si alguien porfa me puede ayudar. Necesito crear una carpeta en la ruta www y dentro de esta carpeta crear subcarpetas, ya que al momento de dar de alta una carpeta, el nombre debe guardarse en la bd.
Por su ayuda. Gracias
[...] Como leer los archivos que hay en una carpeta del servidor con PHP. [...]
Hola Buenas tardes, anticipo que se muy poco de XMLs y Php, pero me baje yun flash donde se hace un llamado a una rutina asp que arroja un xml con la lista de fotos de un directorio especifico, weno, yo tengo un host pero linux asi que usa php, la pregunta es como integrar esta rutina que explican aki a la galeria que baje, esta es la galeria http://www.tutoriales-flash.com/tutorial.php?id_tuto=29...
Y otra duda, esta rutina que explican donde la pongo?, como transfiere los datos?, a un xml?, directo a flash con una variable de retorno?, como?
Gracias….
Hola, bueno gracias por estos aportes que son de gran ayuda. pues lo digo porque me saco de apuros. gracias…
Hola,
espero que esten muy bien
tengo un problema trato de hacer que funcione el codigo de php, que facilitaron arriba y no me funciona ya que me marca un error, en la linea 10,
el error es el sig:
Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\galeria\index.php:9) in C:\AppServ\www\galeria\index.php on line 10
en esta linea se encuentra el sig. codigo
header(”Content-type: text/asp”);
no entiendo porque no funciona.
me pueden ayudar porfavor
ME APARECEN MÚLTIPLES SIGNOS DE INTERROGACIÓN. AL PARECER, DEBO INSTALAR UNA APLICACIÓN ADICIONAL PARA LA EJECUCIÓN DE ARCHIVOS PHP, PERO NO SE CUAL.
GRACIAS POR SU AYUDA.
Hola a todos,
después de leer el totorial no se como poner el directorio donde está mi carpeta a explorar. He puesto de todo hasta con las www, pero no muestra las miniaturas. Gracias.
$dir=”ruta/de/la/carpeta/a/explorar”
Hice muchas pruebas y aun no logro entender como debo poner la ruta…
El raíz de mi servidor se llama “wroot” dentro de este se encuentra otra carpeta, “explorar” y ahí el FLA y otra carpeta mas llamada imágenes (la que quiero utilizar para la galería).
Te dejo acá mas o menos como estas conformadas las carpetas.
//wroot
….____/Explorar
……….________galeria.FLA
……….________galeria.html
……….________AC_RunActiveContent.js
……….________/Imagenes
………………….imagen1.jpg
………………….imagen2.jpg
………………….imagen3.jpg
………………….imagen4.jpg
………………….imagen5.jpg
………………….imagen6.jpg
……….________/php
………………..____explorar.php
Prubas:
/wroot/explorar/imágenes/
/imagenes/
http://midominio/explorer/imagenes/
/explorer/imagenes/
Ya no se que otra cosa debo hacer para que me levante las imágenes… Me podes dar una mano???
Muchas gracias
$dir=”ruta/de/la/carpeta/a/explorar”
funcionar funciona a la perfeccion, tambien corregido el error de header que lo habia pueto en cualqueir lado, ya enlista todo correctamente porque me olvide de colocar la / al final de la ruta (cosa que me soluciona varias cosas al estar ordenado, sino es un despiole) quedaría algo asi…
<?php
header("Content-type: text/xml");
$dir="../leer-carpeta/";
$dr=@opendir($dir);
if(!$dr){
echo "”;
exit;
} else {
echo “”;
// 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 “”;
}
}
echo “”;
closedir($dr);
}
?>
ahora bien… ¿como hago para que esto genere un xml poniendo esos mismos datos?
encontré algo por ahi que es para un reproductor mp3 sin xml, osea… la xml la genera dinamicamente y quería saber si esto puede servir para hacer algo parecido, si lograra que genere una xml externa al php podría utilisarce para uso general y no solo para una sola cosa
saludos, espero una pronta respuesta y gracias por el aporte, de verdad es muy util
Hay un pequenio problemita en ese script
dice:
if(filetype($dir . $archivo)!=”dir”
debe decir
if(filetype($dir .’/’. $archivo)!=”dir”
hola amigos quiero hacer una presentacion de imgenes el diseño lo tengo reaizado en flash ahora quisiera qe lAS Imagenes se me cargen desde postgreSQL me podrian ayudar ?….