Foros del Web » Programando para Internet » PHP »

acceder a los archivos de varios directorios

Estas en el tema de acceder a los archivos de varios directorios en el foro de PHP en Foros del Web. Hola a todos, amigos, tengo unas carpetas que contienen unos archivos Mp3, existe una carpeta madre ("Sonidos") y carpetas hijos y cada carpeta hijos contienen ...
  #1 (permalink)  
Antiguo 08/11/2010, 11:35
Avatar de el_tigre  
Fecha de Ingreso: febrero-2006
Ubicación: Perú
Mensajes: 1.044
Antigüedad: 18 años, 2 meses
Puntos: 8
De acuerdo acceder a los archivos de varios directorios

Hola a todos, amigos, tengo unas carpetas que contienen unos archivos Mp3, existe una carpeta madre ("Sonidos") y carpetas hijos y cada carpeta hijos contienen los archivos Mp3, yo quisiera ejecutar mi reproductro y mi este archivo (ver código) desde la carpeta Madre, lo que no puedo es saber cómo hacer para que el código lea cada uno de las subcarpetas......si ejectuto el código desde cada uno de las subcarpetas me funciona, pero no desde la carpeta madre....

Código PHP:
<?php
$filter 
".mp3";
$directory "Sonidos";
@
$d dir($directory);
if (
$d) { 
    while(
$entry=$d->read()) {  
        
$ps strpos(strtolower($entry), $filter);
        if (!(
$ps === false)) {  
            
$items[] = $entry
        } 
    }
    
$d->close();
    
sort($items);
}
header("content-type:text/xml;charset=utf-8");

echo 
"<?xml version='1.0' encoding='UTF-8' ?>\n";
echo 
"<playlist version='1' xmlns='http://xspf.org/ns/0/'>\n";
echo 
"    <title>Sonidos</title>\n";
echo 
"    <info>http://www.forosdelweb.com/</info>\n";
echo 
"    <trackList>\n";

for(
$i=0$i<sizeof($items); $i++) {
    echo 
"        <track>\n";
    echo 
"            <annotation>".($i+1).". ".$items[$i]."</annotation>\n";
    echo 
"            <location>".$directory.'/'.$items[$i]."</location>\n";
    echo 
"            <info></info>\n";
    echo 
"        </track>\n";
}
echo 
"    </trackList>\n";
echo 
"</playlist>\n";
He estado probando en cambiar el directorio

Código PHP:
$directory "Sonidos"
por

Código PHP:
$directory "../"
pero no me funciona, ¿alguna forma de solucionarlo?

  #2 (permalink)  
Antiguo 08/11/2010, 11:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: acceder a los archivos de varios directorios

Podrías usar alguna función recursiva y detectar si es un directorio y volver a recorrerlo con un bucle. Algo así
Código PHP:
Ver original
  1. <?php
  2. function getFile($file){
  3.     foreach (glob($file . '/*') as $filename) {
  4.         if(is_dir($filename)){
  5.             getFile($filename);
  6.         }
  7.         echo $filename . '<br />';
  8.     }
  9. }
  10. getFile('a');
  11. /**
  12.  * Imprime algo así
  13.  * a/a/a.txt
  14.  * a/a/b.txt
  15.  * a/a
  16.  * a/b/c.txt
  17.  * a/b
  18.  **/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/11/2010, 15:04
Avatar de el_tigre  
Fecha de Ingreso: febrero-2006
Ubicación: Perú
Mensajes: 1.044
Antigüedad: 18 años, 2 meses
Puntos: 8
Respuesta: acceder a los archivos de varios directorios

ok, amigo y cómo o en qué parte pongo el código que me sugieres? yo soy un bruto en PHP recién estoy "gateando en esta materia" por lo que agradezco su orientación.
  #4 (permalink)  
Antiguo 10/11/2010, 16:27
Avatar de el_tigre  
Fecha de Ingreso: febrero-2006
Ubicación: Perú
Mensajes: 1.044
Antigüedad: 18 años, 2 meses
Puntos: 8
Respuesta: acceder a los archivos de varios directorios

Bien, siguiendo la sugerencia... lo puse así:

Código PHP:
<?php

function getFile($file){
    foreach (
glob($file '/*') as $filename) {
        if(
is_dir($filename)){
            
getFile($filename);
        }
        echo 
$filename '<br />';
    }
}


$filter ".mp3";
$directory getFile('a');
@
$d dir($directory);
if (
$d) { 
    while(
$entry=$d->read()) {  
        
$ps strpos(strtolower($entry), $filter);
        if (!(
$ps === false)) {  
            
$items[] = $entry
        } 
    }
    
$d->close();
    
sort($items);
}
header("content-type:text/xml;charset=utf-8");

echo 
"<?xml version='1.0' encoding='UTF-8' ?>\n";
echo 
"<playlist version='1' xmlns='http://xspf.org/ns/0/'>\n";
echo 
"    <title>Sonidos</title>\n";
echo 
"    <info>http://www.forosdelweb.com/</info>\n";
echo 
"    <trackList>\n";

for(
$i=0$i<sizeof($items); $i++) {
    echo 
"        <track>\n";
    echo 
"            <annotation>".($i+1).". ".$items[$i]."</annotation>\n";
    echo 
"            <location>".$directory.'/'.$items[$i]."</location>\n";
    echo 
"            <info></info>\n";
    echo 
"        </track>\n";
}
echo 
"    </trackList>\n";
echo 
"</playlist>\n";
Pero no doy con la solución

Etiquetas: acceder, directorios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:43.