Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Only en Junio 28, 2013, 04:31:56 AM

Título: [SOLUCIONADO] Listar carpetas y archivos en PHP
Publicado por: Only en Junio 28, 2013, 04:31:56 AM
Hola a todos , lo que quiero es poder listar el contenido de una carpeta que se llama CURSOS, suponiendo que la estructura sea :

CURSOS/CURSO1/INFO.TXT
CURSOS/CURSO1/DOC.TXT
CURSOS/CURSO1/PPT.TXT
CURSOS/CURSO1/PDF.TXT

CURSOS/CURSO2/INFO.TXT
CURSOS/CURSO2/DOC.TXT
CURSOS/CURSO2/PPT.TXT
CURSOS/CURSO2/PDF.TXT

Quiero que me lista el nombre de la carpeta y los archivos que estan dentro de ella , pero no se como hacerlo , espero me puedan ayudar

Gracias a todos
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: StuXn3t en Junio 28, 2013, 04:54:24 AM
Hola Only, con respecto a tu duda tal vez te pueda servir algo así:

Código (php) [Seleccionar]

<?php
    $dir 
= (isset($_GET['dir']))?$_GET['dir']:"/";
    
$directorio=opendir($dir); 
    echo 
"<b>Directorio actual:</b><br>$dir<br>"
    echo 
"<b>Archivos:</b><br>"
    while (
$archivo readdir($directorio))
    { 
        if(
$archivo == '.')
            echo 
"<a href=\"?dir=.\">$archivo</a><br>"
        elseif(
$archivo == '..')
        { 
            if(
$dir != '.')
            { 
                
$carpetas split("/",$dir); 
                
array_pop($carpetas); 
                
$dir2 join("/",$carpetas); 
                echo 
"<a href=\"?dir=$dir2\">$archivo</a><br>"
            } 
        }
        elseif(
is_dir("$dir/$archivo"))
            echo 
"<a href=\"?dir=$dir/$archivo\">$archivo</a><br>"
        else echo 
"$archivo<br>"
    }
    
closedir($directorio); 
?>



Saludos!!  :D
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: arthusu en Junio 28, 2013, 04:56:28 AM
este video: http://underc0de.org/foro/php/%28videotutorial%29-editor-de-archivos-en-php/msg47558/  del amigo hckdrk tambien sirve :D
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Only en Junio 28, 2013, 05:11:08 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola Only, con respecto a tu duda tal vez te pueda servir algo así:


<?php
    $dir 
= (isset($_GET['dir']))?$_GET['dir']:"/";
    
$directorio=opendir($dir); 
    echo 
"<b>Directorio actual:</b><br>$dir<br>"
    echo 
"<b>Archivos:</b><br>"
    while (
$archivo readdir($directorio))
    { 
        if(
$archivo == '.')
            echo 
"<a href=\"?dir=.\">$archivo</a><br>"
        elseif(
$archivo == '..')
        { 
            if(
$dir != '.')
            { 
                
$carpetas split("/",$dir); 
                
array_pop($carpetas); 
                
$dir2 join("/",$carpetas); 
                echo 
"<a href=\"?dir=$dir2\">$archivo</a><br>"
            } 
        }
        elseif(
is_dir("$dir/$archivo"))
            echo 
"<a href=\"?dir=$dir/$archivo\">$archivo</a><br>"
        else echo 
"$archivo<br>"
    }
    
closedir($directorio); 
?>



Saludos!!  :D

Estoy probando tu codigo pero en que parte le especifico la carpeta a escanear?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
este video: http://underc0de.org/foro/php/%28videotutorial%29-editor-de-archivos-en-php/msg47558/  del amigo hckdrk tambien sirve :D

Ando checando el video bro muchas gracias
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: StuXn3t en Junio 28, 2013, 05:27:01 AM
Hola Only, mira esta línea:


     $dir = (isset($_GET['dir']))?$_GET['dir']:"/";


La carpeta que será analizada por el código para cargar los archivos que contiene se asigna en la variable $dir, la cual se supone recibe el valor a partir de una petición GET, en caso de que esa petición no se produzca, se da el valor por defecto que es la raíz "/", podrías dejarle también con una ruta absoluta o relativa, por ejm:


    $dir = "/var/www/sitio/carpetaAMostrar";


Saludos!  :D
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Only en Junio 28, 2013, 06:07:10 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola Only, mira esta línea:


     $dir = (isset($_GET['dir']))?$_GET['dir']:"/";


La carpeta que será analizada por el código para cargar los archivos que contiene se asigna en la variable $dir, la cual se supone recibe el valor a partir de una petición GET, en caso de que esa petición no se produzca, se da el valor por defecto que es la raíz "/", podrías dejarle también con una ruta absoluta o relativa, por ejm:


    $dir = "/var/www/sitio/carpetaAMostrar";


Saludos!  :D

Gracias bro pero me marca error en la linea de SPLIT ya que segun php.net ya es obsoleta, otra cosa, solo me enlista las carpetas, pero no los archivos que estan dentro de las carpetas, espero me puedas ayudar

Gracias
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: StuXn3t en Junio 29, 2013, 01:52:04 AM
Entonces puedes usar este otro script más simplificado, lo probé recién y si lista tanto archivos como carpetas del directorio actual (.), el cual en el ejemplo lo mando como dato por defecto, tu puedes modificar el código para que sea recibido a través de un formulario, y lo que se hace para diferenciar entre archivos y carpetas, es que estas últimas se muestran entre corchetes.

Código (php) [Seleccionar]

<?php
$directorio 
opendir("."); //Ruta a tomar para listar es el directorio actual por defecto
while ($archivo readdir($directorio))
{
    if (
is_dir($archivo))
    {
        echo 
'<a href="'.$archivo.'">['.$archivo ']</a><br />';
    }
    else
    {
        echo 
'<a href="'.$archivo.'">'.$archivo '</a><br />';
    }
}
?>

Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Only en Julio 01, 2013, 10:26:24 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Entonces puedes usar este otro script más simplificado, lo probé recién y si lista tanto archivos como carpetas del directorio actual (.), el cual en el ejemplo lo mando como dato por defecto, tu puedes modificar el código para que sea recibido a través de un formulario, y lo que se hace para diferenciar entre archivos y carpetas, es que estas últimas se muestran entre corchetes.


<?php
$directorio 
opendir("."); //Ruta a tomar para listar es el directorio actual por defecto
while ($archivo readdir($directorio))
{
    if (
is_dir($archivo))
    {
        echo 
'<a href="'.$archivo.'">['.$archivo ']</a><br />';
    }
    else
    {
        echo 
'<a href="'.$archivo.'">'.$archivo '</a><br />';
    }
}
?>



Lo acabo de probar bro y solo me lista las carpetas , pero los archivos que estan dentro de esas carpetas no los enlista, espero me puedas ayudar a hacer eso. Gracias
(http://i1188.photobucket.com/albums/z407/Cesar_Torres_1/Sintiacutetulo_zpsc57a32dd.png) (http://s1188.photobucket.com/user/Cesar_Torres_1/media/Sintiacutetulo_zpsc57a32dd.png.html)
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Xt3mP en Julio 03, 2013, 05:57:23 AM
Lo que necesitas hacer Only es algo llamado recursividad; pero ¿qué es la recursividad?, a términos generales es una función que se llama a sí misma para resolverse, es decir, mientras algo se cumpla se seguirá ejecutando.


Teniendo en cuenta ésto, y qué es más sencillo y gasta menos memoria la función scandir() la cual es más completa llegamos al siguiente resultado:

(http://i.imgur.com/wSBT8Gj.png)

Código (php) [Seleccionar]
<?php
function scanDirectory($directory){
$files scandir($directory);
echo '<ul>';
foreach($files as $file){
if($file != '.' && $file != '..'){
if(filetype($directory $file) == 'dir'){
echo '<li>Directorio :: ' $directory $file '/';
scanDirectory($directory $file '/');
}else{
echo '<li>' $file;
}
echo '</li>';
}

}
echo '</ul>';
}
scanDirectory('./');
?>


Ahora, sino quieres emplear tablas para que el listado sea más estético puedes usar éste otro:

(http://i.imgur.com/FzCefUb.png)

Código (php) [Seleccionar]
<?php
function scanDirectory($directory){
$files scandir($directory);
foreach($files as $file){
if($file != '.' && $file != '..'){
if(filetype($directory $file) == 'dir'){
echo '<h1>' $directory $file '/</h1>';
scanDirectory($directory $file '/');
}else{
echo $file '<br />';
}
}
}
}
scanDirectory('./');
?>



¿Qué hace la función?, escanea un directorio en busca de archivos y directorios; al encontrar un directorio vuelve a llamar la función en sí recursivamente para escanear así hasta no encontrar nada.


Saludos,
Xt3mP.
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Only en Julio 04, 2013, 05:11:22 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Lo que necesitas hacer Only es algo llamado recursividad; pero ¿qué es la recursividad?, a términos generales es una función que se llama a sí misma para resolverse, es decir, mientras algo se cumpla se seguirá ejecutando.


Teniendo en cuenta ésto, y qué es más sencillo y gasta menos memoria la función scandir() la cual es más completa llegamos al siguiente resultado:

(http://i.imgur.com/wSBT8Gj.png)

Código (php) [Seleccionar]
<?php
function scanDirectory($directory){
$files scandir($directory);
echo '<ul>';
foreach($files as $file){
if($file != '.' && $file != '..'){
if(filetype($directory $file) == 'dir'){
echo '<li>Directorio :: ' $directory $file '/';
scanDirectory($directory $file '/');
}else{
echo '<li>' $file;
}
echo '</li>';
}

}
echo '</ul>';
}
scanDirectory('./');
?>


Ahora, sino quieres emplear tablas para que el listado sea más estético puedes usar éste otro:

(http://i.imgur.com/FzCefUb.png)

Código (php) [Seleccionar]
<?php
function scanDirectory($directory){
$files scandir($directory);
foreach($files as $file){
if($file != '.' && $file != '..'){
if(filetype($directory $file) == 'dir'){
echo '<h1>' $directory $file '/</h1>';
scanDirectory($directory $file '/');
}else{
echo $file '<br />';
}
}
}
}
scanDirectory('./');
?>



¿Qué hace la función?, escanea un directorio en busca de archivos y directorios; al encontrar un directorio vuelve a llamar la función en sí recursivamente para escanear así hasta no encontrar nada.


Saludos,
Xt3mP.

Implemente la segunda funcion pero me lee todos los archivos de la carpeta raiz, quiero que me lea especificamente una carpeta , como lo podria hacer?
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Xt3mP en Julio 04, 2013, 05:53:10 PM
Indicale en el parámetro que le pasas que es lo que debe leer, en éste caso deberías usar ./Carpetaencuestion/.

Saludos,
Xt3mP.
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Only en Julio 08, 2013, 05:42:57 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Indicale en el parámetro que le pasas que es lo que debe leer, en éste caso deberías usar ./Carpetaencuestion/.

Saludos,
Xt3mP.

Ya se lo indique pero no me hace nada
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Xt3mP en Julio 10, 2013, 10:23:28 PM
Mmmmm funciona de maravilla acá.
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Only en Julio 13, 2013, 02:41:39 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Mmmmm funciona de maravilla acá.

Le paso el parametro $directory

$directory = "./cursos/";

pero me sigue leyendo la carpeta principal del servidor
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: DarkSpark en Julio 19, 2013, 12:22:20 PM
Yo no se mucho de php, pero aver si esto te funciona:


Código (php) [Seleccionar]
<?php
$dir
="cursos";  //directorio a listar
$list=`ls $dir`; 
$listado=trim ($list);
$directorios=explode("\n"$listado);

foreach (
$directorios as $dirlist){
  $search=`ls $dir/$dirlist/`;
  $interior=trim($search);
  $int=explode ("\n" $interior);
  echo "$dirlist <br>";
  foreach ($int as $archivos){
      echo "<li>$archivos</li>";
      }
  echo "<hr>";
  }


?>


(http://img163.imageshack.us/img163/1698/efee.png) (http://imageshack.us/photo/my-images/163/efee.png/)




si el server es windows, no se si se pordra sustituir el "ls" por un "dir".
saludos.
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Aex12 en Julio 30, 2013, 08:10:51 AM
Yo tengo una función que hice hace poco y funciona muy bien.
Código (php) [Seleccionar]
<?php
function extension($ext){
 if(
strpos($ext,".")){
  return 
end(explode("."$ext));
 } else {
  return 
".";
 }
}

function 
aex_buscar($ruta$ext=FALSE){
 
$archivos = array();
 if(
$ext){
 
$ext strtolower($ext);
 if(
strpos($ext",")){
 
$ext2 explode(","$ext);
 } else {
 
$ext2 = array('0' => $ext);
 }
 }
 if (
is_dir($ruta)){
 if (
$dh opendir($ruta)){
 while ((
$file readdir($dh)) !== false){
 
$extension extension(strtolower($file));
 if(
$file != ".."){
 if(
$file != "."){
 if(!
is_dir($ruta.'/'.$file)){
 if(
$ext){
 if(
in_array($extension$ext2)){
 
$archivos[] = $ruta.'/'.$file;
 }
 } else {
 
$archivos[] = $ruta.'/'.$file;
 }
 } else {
 
$archivos array_merge($archivosaex_buscar($ruta.'/'.$file$ext));
 }
 }
 }
 }
 
closedir($dh);
 } else {
 return 
FALSE;
 }
 } else {
 return 
FALSE;
 }
 return 
$archivos;
 }
 
 
$archivos aex_buscar("/var/www""php");
 
$i 0;
 while(
$i count($archivos)){
 echo 
$archivos[$i].'<br>';
 
$i++;
 }
 
?>


Para obtener todos los archivos de un directorio recursivamente simplemente escribes esta sentencia:
$archivos = aex_buscar("/var/www");
Si quieres puedes especificar los archivos que tengan cierta extension de esta forma:
$archivos = aex_buscar("/var/www", "php,txt,html");
Luego todos los archivos de ese directorio se guardan en la variable que tu indiques, en este caso $archivos.
Con estas lineas muestras los archivos en pantalla:
Código (php) [Seleccionar]
$i = 0;
while($i < count($archivos)){
echo $archivos[$i].'<br>';
$i++;
}

Si tambien quieres que muestre las carpetas bastaría con editar la función aex_buscar() para que guarde las carpetas en el array. Un saludete
Título: Re:[Ayuda]Listar carpetas y archivos en PHP
Publicado por: Xt3mP en Agosto 03, 2013, 03:56:04 AM
El script que te di, Only, funciona perfecto; de hecho lo probé con carpetas estáticas.