una todas mostrar listar listado las imprimir imagenes directorio desde carpeta archivos abrir php folder

mostrar - Listado de todas las carpetas subcarpetas y archivos en un directorio usando php



mostrar todas las imagenes de una carpeta html (14)

Aquí hay una función simple con scandir y array_filter que hacen el trabajo. filtrar los archivos necesarios usando regex. Yo eliminé .. y archivos ocultos como .htaccess , también puedes personalizar los resultados usando <ul> y colores y también personalizar los errores en caso de que no haya escaneos o directorios vacíos.

function getAllContentOfLocation($loc) { $scandir = scandir($loc); $scandir = array_filter($scandir, function($element){ return !preg_match(''/^/./'', $element); }); if(empty($scandir)) echo ''<li style="color:red">Empty Dir</li>''; foreach($scandir as $file){ $baseLink = $loc . DIRECTORY_SEPARATOR . $file; echo ''<ol>''; if(is_dir($baseLink)) { echo ''<li style="font-weight:bold;color:blue">''.$file.''</li>''; getAllContentOfLocation($baseLink); }else{ echo ''<li>''.$file.''</li>''; } echo ''</ol>''; } } //Call function and set location that you want to scan getAllContentOfLocation(''../app'');

Por favor, dame una solución para listar todas las carpetas, subcarpetas, archivos en un directorio usando php. Mi estructura de carpetas es así:

Main Dir Dir1 SubDir1 File1 File2 SubDir2 File3 File4 Dir2 SubDir3 File5 File6 SubDir4 File7 File8

Quiero obtener la lista de todos los archivos dentro de cada carpeta.

¿Hay algún comando de script de shell en php?



En caso de que quiera usar directoryIterator

La siguiente función es una reimplementación de la respuesta @Shef con directoryIterator

function listFolderFiles($dir) { echo ''<ol>''; foreach (new DirectoryIterator($dir) as $fileInfo) { if (!$fileInfo->isDot()) { echo ''<li>'' . $fileInfo->getFilename(); if ($fileInfo->isDir()) { listFolderFiles($fileInfo->getPathname()); } echo ''</li>''; } } echo ''</ol>''; } listFolderFiles(''Main Dir'');


Este código enumera todos los directorios y archivos en orden ordenado en una vista de árbol. Es un generador de mapas de sitio con hipervínculos a todos los recursos del sitio. La fuente completa de la página web está aquí. Tendrá que cambiar la ruta en la novena línea desde el final.

<?php $pathLen = 0; function prePad($level) { $ss = ""; for ($ii = 0; $ii < $level; $ii++) { $ss = $ss . "|&nbsp;&nbsp;"; } return $ss; } function myScanDir($dir, $level, $rootLen) { global $pathLen; if ($handle = opendir($dir)) { $allFiles = array(); while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { if (is_dir($dir . "/" . $entry)) { $allFiles[] = "D: " . $dir . "/" . $entry; } else { $allFiles[] = "F: " . $dir . "/" . $entry; } } } closedir($handle); natsort($allFiles); foreach($allFiles as $value) { $displayName = substr($value, $rootLen + 4); $fileName = substr($value, 3); $linkName = str_replace(" ", "%20", substr($value, $pathLen + 3)); if (is_dir($fileName)) { echo prePad($level) . $linkName . "<br>/n"; myScanDir($fileName, $level + 1, strlen($fileName)); } else { echo prePad($level) . "<a href=/"" . $linkName . "/" style=/"text-decoration:none;/">" . $displayName . "</a><br>/n"; } } } } ?><!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <title>Site Map</title> </head> <body> <h1>Site Map</h1> <p style="font-family:''Courier New'', Courier, monospace; font-size:small;"> <?php $root = ''/home/someuser/www/website.com/public''; $pathLen = strlen($root); myScanDir($root, 0, strlen($root)); ?> </p> </body> </html>


Lo usará para hacer la barra de menú en formato de directorio

$pathLen = 0; function prePad($level) { $ss = ""; for ($ii = 0; $ii < $level; $ii++) { $ss = $ss . "|&nbsp;&nbsp;"; } return $ss; } function myScanDir($dir, $level, $rootLen) { global $pathLen; if ($handle = opendir($dir)) { $allFiles = array(); while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { if (is_dir($dir . "/" . $entry)) { $allFiles[] = "D: " . $dir . "/" . $entry; } else { $allFiles[] = "F: " . $dir . "/" . $entry; } } } closedir($handle); natsort($allFiles); foreach($allFiles as $value) { $displayName = substr($value, $rootLen + 4); $fileName = substr($value, 3); $linkName = str_replace(" ", " ", substr($value, $pathLen + 3)); if (is_dir($fileName)) { echo "<li ><a class=''dropdown''><span>" . $displayName . " </span></a><ul>"; myScanDir($fileName, $level + 1, strlen($fileName)); echo "</ul></li>"; } else { $newstring = substr($displayName, -3); if($newstring == "PDF" || $newstring == "pdf" ) echo "<li ><a href=/"" . $linkName . "/" style=/"text-decoration:none;/">" . $displayName . "</a></li>"; } $t; if($level != 0) { if($level < $t) { $r = int($t) - int($level); for($i=0;$i<$r;$i++) { echo "</ul></li>"; } } } $t = $level; } } } ?> <li style="color: #ffffff"> <?php // ListFolder(''D:/PDF''); $root = ''D:/PDF''; $pathLen = strlen($root); myScanDir($root, 0, strlen($root)); ?> </li>


Si está buscando un directorio recursivo que liste las soluciones y las organice en una matriz multidimensional. Use el siguiente código:

<?php /** * Function for recursive directory file list search as an array. * * @param mixed $dir Main Directory Path. * * @return array */ function listFolderFiles($dir) { $fileInfo = scandir($dir); $allFileLists = []; foreach ($fileInfo as $folder) { if ($folder !== ''.'' && $folder !== ''..'') { if (is_dir($dir . DIRECTORY_SEPARATOR . $folder) === true) { $allFileLists[$folder] = listFolderFiles($dir . DIRECTORY_SEPARATOR . $folder); } else { $allFileLists[$folder] = $folder; } } } return $allFileLists; }//end listFolderFiles() $dir = listFolderFiles(''your searching directory path ex:-F:/xampp/htdocs/abc''); echo ''<pre>''; print_r($dir); echo ''</pre>'' ?>



También puedes probar esto:

<?php function listdirs($dir) { static $alldirs = array(); $dirs = glob($dir . ''/*'', GLOB_ONLYDIR); if (count($dirs) > 0) { foreach ($dirs as $d) $alldirs[] = $d; } foreach ($dirs as $dir) listdirs($dir); return $alldirs; } $directory_list = listdirs(''xampp''); print_r($directory_list); ?>


Tarde para el espectáculo, pero para construir de la respuesta aceptada ...

Si desea tener todos los archivos y directorios en forma de matriz (que puede ser JSON.stringify muy bien con JSON.stringify en javascript), puede modificar la función para:

function listFolderFiles($dir) { $arr = array(); $ffs = scandir($dir); foreach($ffs as $ff) { if($ff != ''.'' && $ff != ''..'') { $arr[$ff] = array(); if(is_dir($dir.''/''.$ff)) { $arr[$ff] = listFolderFiles($dir.''/''.$ff); } } } return $arr; }

Para los novatos ...

Para usar el JSON.stringify antes mencionado, su JS / jQuery sería algo así como:

var ajax = $.ajax({ method: ''POST'', data: {list_dirs: true} }).done(function(msg) { $(''pre'').html( ''FILE LAYOUT<br/>'' + JSON.stringify(JSON.parse(msg), null, 4) ); });

^ Esto supone que tienes un elemento <pre> en tu HTML en alguna parte. Cualquier sabor de AJAX servirá, pero creo que la mayoría de la gente está usando algo similar al jQuery anterior.

Y el PHP que lo acompaña:

if(isset($_POST[''list_dirs''])) { echo json_encode(listFolderFiles($rootPath)); exit(); }

donde ya tiene listFolderFiles desde antes.

En mi caso, establecí mi $rootPath en el directorio raíz del sitio ...

$rootPath; if(!isset($rootPath)) { $rootPath = $_SERVER[''DOCUMENT_ROOT'']; }

El resultado final es algo así como ...

| some_file_1487.smthng [] | some_file_8752.smthng [] | CSS | | some_file_3615.smthng [] | | some_file_8151.smthng [] | | some_file_7571.smthng [] | | some_file_5641.smthng [] | | some_file_7305.smthng [] | | some_file_9527.smthng [] | | IMAGES | | some_file_4515.smthng [] | | some_file_1335.smthng [] | | some_file_1819.smthng [] | | some_file_9188.smthng [] | | some_file_4760.smthng [] | | some_file_7347.smthng [] | | JSScripts | | some_file_6449.smthng [] | | some_file_7864.smthng [] | | some_file_3899.smthng [] | | google-code-prettify | | | some_file_2090.smthng [] | | | some_file_5169.smthng [] | | | some_file_3426.smthng [] | | | some_file_8208.smthng [] | | | some_file_7581.smthng [] | | | some_file_4618.smthng [] | | | | some_file_3883.smthng [] | | some_file_3713.smthng [] ... and so on...

Nota: El suyo no se verá exactamente así: he modificado JSON.stringify para mostrar pestañas (tubos verticales), alinear todos los valores con clave, quitar citas de las teclas y un par de otras cosas. Modificaré esta respuesta con un enlace si alguna vez llego a subirlo o si tengo suficiente interés.


Una forma muy simple de mostrar la estructura de carpetas hace uso de la clase RecursiveTreeIterator (PHP 5> = 5.3.0, PHP 7) y genera un árbol de gráficos ASCII.

$it = new RecursiveTreeIterator(new RecursiveDirectoryIterator("/path/to/dir", RecursiveDirectoryIterator::SKIP_DOTS)); foreach($it as $path) { echo $path."<br>"; }

http://php.net/manual/en/class.recursivetreeiterator.php

También hay cierto control sobre la representación ASCII del árbol cambiando los prefijos usando RecursiveTreeIterator::setPrefixPart , por ejemplo $it->setPrefixPart(RecursiveTreeIterator::PREFIX_LEFT, "|");



function listFolderFiles($dir){ $ffs = scandir($dir); unset($ffs[array_search(''.'', $ffs, true)]); unset($ffs[array_search(''..'', $ffs, true)]); // prevent empty ordered elements if (count($ffs) < 1) return; echo ''<ol>''; foreach($ffs as $ff){ echo ''<li>''.$ff; if(is_dir($dir.''/''.$ff)) listFolderFiles($dir.''/''.$ff); echo ''</li>''; } echo ''</ol>''; } listFolderFiles(''Main Dir'');


define (''PATH'', $_SERVER[''DOCUMENT_ROOT''] . dirname($_SERVER[''PHP_SELF''])); $dir = new DirectoryIterator(PATH); echo ''<ul>''; foreach ($dir as $fileinfo) { if (!$fileinfo->isDot()) { echo ''<li><a href="''.$fileinfo->getFilename().''" target="_blank">''.$fileinfo->getFilename().''</a></li>''; echo ''</li>''; } } echo ''</ul>'';


function GetDir($dir) { if(is_dir($dir)) { if($kami= opendir($dir)){ while($file = readdir($kami)){ if($file != ''.'' && $file != ''..''){ if(is_dir($dir . $file)){ echo $dir . $file; // since it is a directory we recurse it. GetDir($dir . $file . ''/''); }else{ echo $dir . $file; } } } } closedir($kami); }

}