2009-04-06 14 views
34

Quiero leer una lista de los nombres de los archivos en una carpeta en una página web usando php. ¿hay alguna secuencia de comandos simple para lograrlo?¿Cómo leer una lista de archivos de una carpeta usando PHP?

+0

Sí se puede leer usando php, por favor lee y usa esta clase. Estoy seguro que te ayudará mucho. http://www.devbaba.com/2015/06/04/how-to-fetch-and-list-the-files-and-sub-directories-in-specific-directory/ – naCheex

Respuesta

96

La forma más sencilla y divertida (OMI) es glob

foreach (glob("*.*") as $filename) { 
    echo $filename."<br />"; 
} 

Pero la forma estándar es utilizar el directory functions.

if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      echo "filename: .".$file."<br />"; 
     } 
     closedir($dh); 
    } 
} 

También el SPL DirectoryIterator methods son. Si está interesado

+0

Gracias Olafur que ayuda mucho .. –

+0

No recomiendo Glob - nunca! Es extremadamente lento, especialmente con muchos archivos. Yo usaría uno de estos: FilesystemIterator, DirectoryIterator, RecursiveDirectoryIterator. – JREAM

2

Si tiene problemas con el acceso a la ruta, tal vez usted necesita para poner esto:

$root = $_SERVER['DOCUMENT_ROOT']; 
$path = "/cv/"; 

// Open the folder 
$dir_handle = @opendir($root . $path) or die("Unable to open $path"); 
2

No es un pegote. En la página hay buen artículo como listar los archivos de manera muy sencilla:

How to read a list of files from a folder using PHP

+8

Tenga en cuenta que las respuestas de solo vínculo no se recomiendan, por lo que las respuestas deberían ser el punto final de una búsqueda de una solución (frente a otra escala de referencias, que tienden a quedarse obsoletas en el tiempo). Considere agregar una sinopsis independiente aquí, manteniendo el enlace como referencia. – kleopatra

11

Esto es lo Me gusta hacer:

$files = array_values(array_filter(scandir($path), function($file) { 
    return !is_dir($file); 
})); 

foreach($files as $file){ 
    echo $file; 
} 
+0

Necesita una pequeña corrección: uso de la función ($ file) ($ path) {return! Is_dir ($ path. '/'. $ File); – Borgboy

1

Comprobar en muchas carpetas:

Folder_1 y Folder_2 son nombre de carpetas, de la que tenemos que seleccionar los archivos.

$ formato es requerido.

<?php 
$arr = array("folder_1","folder_2"); 
$format = ".csv"; 

for($x=0;$x<count($arr);$x++){ 
    $mm = $arr[$x]; 

    foreach (glob("$mm/*$format") as $filename) { 
     echo "$filename size " . filesize($filename) . "<br>"; 
    } 
} 
?> 
-2
<?php 
    $files = glob("images/*.*"); 
    for ($i=0; $i<count($files); $i++) { // $i mean to start first files names. 
    $num = $files[$i]; 
    echo '<img src="'.$num.'" />'."<br />\n"; 
} 
?> 

imágenes/es el significado a su directorio de imágenes. $ i = 0 variable es encontrar el . archivos de imágenes y se iniciará el primer nombre de archivo.

+1

Explique cómo su fragmento de código es una respuesta a la pregunta de OP. – YSC

0

puede utilizar las funciones de directorio estándar

$dir = opendir('/tmp'); 
while ($file = readdir($dir)) { 
    if ($file == '.' || $file == '..') { 
     continue; 
    } 

    echo $file; 
} 
closedir($dir); 
0
<html> 
<head> 
<title>Names</title> 
</head> 
<body style="background-color:powderblue;"> 

<form method='post' action='alex.php'> 
<input type='text' name='name'> 
<input type='submit' value='name'> 
</form> 
Enter Name: 
<?php 

    if($_POST) 
    { 
    $Name = $_POST['name']; 
    $count = 0; 
    $fh=fopen("alex.txt",'a+') or die("failed to create"); 
    while(!feof($fh)) 
    { 
    $line = chop(fgets($fh)); 
    if($line==$Name && $line!="") 
    $count=1; 
    } 
    if($count==0 && $Name!="") 
    { 
    fwrite($fh, "\r\n$Name"); 
} 
    else if($count!=0 && $line!="") 
    { 
    echo '<font color="red">'.$Name.', the name you entered is already in the list.</font><br><br>'; 
    } 
    $count=0; 
    fseek($fh, 0); 
    while(!feof($fh)) 
    { 
    $a = chop(fgets($fh)); 
    echo $a.'<br>'; 
    $count++; 
    } 
    if($count<=1) 
    echo '<br>There are no names in the list<br>'; 
    fclose($fh); 
    } 
?> 
</body> 
</html> 
+1

Si bien este código puede responder a la pregunta, proporcionar un contexto adicional con respecto a * cómo * y/o * por qué * resuelve el problema mejoraría el valor a largo plazo de la respuesta. – radoh

Cuestiones relacionadas