una subdirectorios subcarpetas listar directorios directorio desde descargar contar con carpetas carpeta archivos abrir php

subdirectorios - Cómo listar archivos y carpetas en un directorio(PHP)



listar carpetas y subcarpetas con php (11)

Echa un vistazo a la construcción de un navegador de directorio simple usando PHP RecursiveDirectoryIterator

Además, como mencionó que desea incluir en la lista, también puede consultar algunas bibliotecas confeccionadas que crean exploradores de archivos / carpetas, por ejemplo:

Esta pregunta ya tiene una respuesta aquí:

Hola, estoy tratando de mostrar todos los archivos y carpetas en un directorio con PHP

p.ej

Dir: sistema / información /

Carpeta - Usuario

Archivos del usuario - User1.txt

Archivos del usuario - User2.txt

Archivos del usuario - User3.txt

Archivos del usuario - User4.txt

Carpeta - Jugadores

Archivos de jugadores - Player1.txt

Archivos de jugadores - Player2.txt

Archivos de jugadores - Player3.txt

Archivos de jugadores - Player4.txt

¿Puede alguien llevarme por la calle correcta, por favor?

Gracias


He encontrado en www.laughing-buddha.net/php/lib/dirlist/ una función que devuelve una matriz que contiene una lista de los contenidos de un directorio.

También busque en php.net http://es.php.net/manual/es/ref.filesystem.php donde encontrará funciones adicionales para trabajar con archivos en php.


Puede usar las funciones de directorio: http://php.net/manual/en/book.dir.php

Ejemplo simple de la descripción de la función opendir() :

<?php $dir_path = "/path/to/your/dir"; if (is_dir($dir_path)) { if ($dir_handler = opendir($dir_path)) { while (($file = readdir($dir_handler)) !== false) { echo "filename: $file : filetype: " . filetype($dir_path . $file) . "/n"; } closedir($dir_handler); } } ?>


Puedes usar:

foreach (new DirectoryIterator("./system/information/") as $fn) { print $fn->getFilename(); }

Tendrás que usarlo dos veces para cada subdirector, jugadores y usuarios.


Si tiene problemas para acceder a la ruta, tal vez necesite poner esto:

$root = $_SERVER[''DOCUMENT_ROOT'']; $path = "/cv/"; // Open the folder $dir_handle = @opendir($root . $path) or die("Unable to open $path");




use esta función http://www.codingforums.com/showthread.php?t=71882

function getDirectory( $path = ''.'', $level = 0 ){ $ignore = array( ''cgi-bin'', ''.'', ''..'' ); // Directories to ignore when listing output. Many hosts // will deny PHP access to the cgi-bin. $dh = @opendir( $path ); // Open the directory to the handle $dh while( false !== ( $file = readdir( $dh ) ) ){ // Loop through the directory if( !in_array( $file, $ignore ) ){ // Check that this file is not to be ignored $spaces = str_repeat( ''&nbsp;'', ( $level * 4 ) ); // Just to add spacing to the list, to better // show the directory tree. if( is_dir( "$path/$file" ) ){ // Its a directory, so we need to keep reading down... echo "<strong>$spaces $file</strong><br />"; getDirectory( "$path/$file", ($level+1) ); // Re-call this same function but on a new directory. // this is what makes function recursive. } else { echo "$spaces $file<br />"; // Just print out the filename } } } closedir( $dh ); // Close the directory handle }

y llamar a la funcion asi

getDirectory( "." ); // Get the current directory getDirectory( "./files/includes" ); // Get contents of the "files/includes" folder


LISTAR ARCHIVOS EN CARPETA - 1 solución

<?php // open this directory $myDirectory = opendir("."); // get each entry while($entryName = readdir($myDirectory)) { $dirArray[] = $entryName; } // close directory closedir($myDirectory); // count elements in array $indexCount = count($dirArray); Print ("$indexCount files<br>/n"); // sort ''em sort($dirArray); // print ''em print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>/n"); print("<TR><TH>Filename</TH><th>Filetype</th><th>Filesize</th></TR>/n"); // loop through the array of files and print them all for($index=0; $index < $indexCount; $index++) { if (substr("$dirArray[$index]", 0, 1) != "."){ // don''t list hidden files print("<TR><TD><a href=/"$dirArray[$index]/">$dirArray[$index]</a></td>"); print("<td>"); print(filetype($dirArray[$index])); print("</td>"); print("<td>"); print(filesize($dirArray[$index])); print("</td>"); print("</TR>/n"); } } print("</TABLE>/n"); ?>

2 soluciones

<?PHP # The current directory $directory = dir("./"); # If you want to turn on Extension Filter, then uncomment this: ### $allowed_ext = array(".sample", ".png", ".jpg", ".jpeg", ".txt", ".doc", ".xls"); ## Description of the soft: list_dir_files.php ## Major credits: phpDIRList 2.0 -(c)2005 Ulrich S. Kapp :: Systemberatung :: $do_link = TRUE; $sort_what = 0; //0- by name; 1 - by size; 2 - by date $sort_how = 0; //0 - ASCENDING; 1 - DESCENDING # # # function dir_list($dir){ $i=0; $dl = array(); if ($hd = opendir($dir)) { while ($sz = readdir($hd)) { if (preg_match("/^/./",$sz)==0) $dl[] = $sz;$i.=1; } closedir($hd); } asort($dl); return $dl; } if ($sort_how == 0) { function compare0($x, $y) { if ( $x[0] == $y[0] ) return 0; else if ( $x[0] < $y[0] ) return -1; else return 1; } function compare1($x, $y) { if ( $x[1] == $y[1] ) return 0; else if ( $x[1] < $y[1] ) return -1; else return 1; } function compare2($x, $y) { if ( $x[2] == $y[2] ) return 0; else if ( $x[2] < $y[2] ) return -1; else return 1; } }else{ function compare0($x, $y) { if ( $x[0] == $y[0] ) return 0; else if ( $x[0] < $y[0] ) return 1; else return -1; } function compare1($x, $y) { if ( $x[1] == $y[1] ) return 0; else if ( $x[1] < $y[1] ) return 1; else return -1; } function compare2($x, $y) { if ( $x[2] == $y[2] ) return 0; else if ( $x[2] < $y[2] ) return 1; else return -1; } } ################################################## # We get the information here ################################################## $i = 0; while($file=$directory->read()) { $file = strtolower($file); $ext = strrchr($file, ''.''); if (isset($allowed_ext) && (!in_array($ext,$allowed_ext))) { // dump } else { $temp_info = stat($file); $new_array[$i][0] = $file; $new_array[$i][1] = $temp_info[7]; $new_array[$i][2] = $temp_info[9]; $new_array[$i][3] = date("F d, Y", $new_array[$i][2]); $i = $i + 1; } } $directory->close(); ################################################## # We sort the information here ################################################# switch ($sort_what) { case 0: usort($new_array, "compare0"); break; case 1: usort($new_array, "compare1"); break; case 2: usort($new_array, "compare2"); break; } ############################################################### # We display the infomation here ############################################################### $i2 = count($new_array); $i = 0; echo "<table border=1> <tr> <td width=150> File name</td> <td width=100> File Size</td> <td width=100>Last Modified</td> </tr>"; for ($i=0;$i<$i2;$i++) { if (!$do_link) { $line = "<tr><td align=right>" . $new_array[$i][0] . "</td><td align=right>" . number_format(($new_array[$i][1]/1024)) . "k"; $line = $line . "</td><td align=right>" . $new_array[$i][3] . "</td></tr>"; }else{ $line = ''<tr><td align=right><A HREF="'' . $new_array[$i][0] . ''">'' . $new_array[$i][0] . "</A></td><td align=right>"; $line = $line . number_format(($new_array[$i][1]/1024)) . "k" . "</td><td align=right>" . $new_array[$i][3] . "</td></tr>"; } echo $line; } echo "</table>"; ?>


PHP 5 tiene el RecursiveDirectoryIterator .

El manual tiene un ejemplo básico:

<?php $directory = ''/system/infomation/''; $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)); while($it->valid()) { if (!$it->isDot()) { echo ''SubPathName: '' . $it->getSubPathName() . "/n"; echo ''SubPath: '' . $it->getSubPath() . "/n"; echo ''Key: '' . $it->key() . "/n/n"; } $it->next(); } ?>

Editar : aquí hay un ejemplo un poco más avanzado (solo un poco) que produce resultados similares a los que desea (es decir, los nombres de las carpetas y luego los archivos).

// Create recursive dir iterator which skips dot folders $dir = new RecursiveDirectoryIterator(''./system/information'', FilesystemIterator::SKIP_DOTS); // Flatten the recursive iterator, folders come before their files $it = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST); // Maximum depth is 1 level deeper than the base folder $it->setMaxDepth(1); // Basic loop displaying different messages based on file or folder foreach ($it as $fileinfo) { if ($fileinfo->isDir()) { printf("Folder - %s/n", $fileinfo->getFilename()); } elseif ($fileinfo->isFile()) { printf("File From %s - %s/n", $it->getSubPath(), $fileinfo->getFilename()); } }


//path to directory to scan $directory = "../data/team/"; //get all text files with a .txt extension. $texts = glob($directory . "*.txt"); //print each file name foreach($texts as $text) { echo $text; }