cargar directorios y subdirectorios
2 seguidores
Hola que tal.
vereis, tengo este codigo que lee las imagenes de un directorio y las pasa a un array.
function returnimages($dirname = "./img/") {
$pattern="\.(jpg|jpeg|png|gif|bmp)$";
$files = array();
$curimage=0;
if($handle = opendir($dirname)) {
while(false !== ($file = readdir($handle))){
if(eregi($pattern, $file)){
echo 'myimages[' . $curimage .']="' . $dirname . $file . '";' . "\n";
$curimage++;
}
}
closedir($handle);
}
return($files);
}
El caso es que me gustaria que cogiera tambien las imagenes de los subdirectorios.
¿Alguien podria ayudarme por favor?
Muchas gracias
Un saludo
buga
Necesitaria hacer lo mismo para esta funcion, pero me temo que se me queda grande.
Agradeceria vuestra ayuda
<?php
/* PHP file, e.g. scanImageDirectory.json.php */
// Check that a callback function has been specified:
if (!isset($_GET['callback']) || !isset($_GET['directory'])) exit;
// Use PHP5's scandir function to scan all
// of images directory:
$dirContents = scandir($_GET['directory']);
// Define function to confirm each
// filename is a valid image name/extension:
function isImageFile($src) {
return preg_match('/^.+\.(gif|png|jpe?g|bmp|tif)$/i', $src);
}
// Loop through directory files and add to
// $arrayContents on each iteration:
$arrayContents = '';
foreach($dirContents as $image) {
if (isImageFile($image)) {
$arrayContents .= !empty($arrayContents) ? ',' : '';
$arrayContents .= '"' . 'images/' . $image . '"';
}
}
// Prepate JSON(P) output
$output = $_GET['callback'] . '({\'images\':[' . $arrayContents . ']});';
// Output the output:
echo $output;
?>
phpninja
Tienes que hacerlo con recursión.
Busca directamente en google listar archivos y directorios php recursión. Y lo modificas luego para que te escupa solo las imagenes.
buga
He hecho lo que me comentas y he topado con este codigo que hace mas o menos lo que necesito:
<?php
function listar_directorios_ruta($ruta){
// abrir un directorio y listarlo recursivo
if (is_dir($ruta)) {
if ($dh = opendir($ruta)) {
while (($file = readdir($dh)) !== false) {
//esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio
//mostraría tanto archivos como directorios
echo "<br><b>Nombre de archivo:</b> $file : Es un: " . filetype($ruta . $file);
if (is_dir($ruta . "/" . $file) && $file!="." && $file!=".."){
//solo si el archivo es un directorio, distinto que "." y ".."
echo "<br><br><b>Directorio:</b> $ruta$file<br>";
listar_directorios_ruta($ruta ."/". $file . "/");
}
}
closedir($dh);
}
}else
echo "<br>No es ruta valida";
}
listar_directorios_ruta('images/')
?>
Alguien podria ayudarme a adaptarlo a los codigos de arriba por favor.
Estaria muy agradecido.
Aparte me gustaria preguntar unas dudas.
Este codigo que acabo de poner escupe lo siguiente:
¿Que son este tipo de lineas que muestran un punto y dos puntos seguidos? porque las muestra?
[quote]Nombre de archivo: . : Es un: dir
Nombre de archivo: .. : Es un: dir
Muchas gracias
Un saludo
phpninja
. es el directorio en el que estás, .. es el directorio "padre" del directorio en el cual estás.
En vez de hacer el echo, guardalo en un array o directamente en una cadena para que lo puedas usar luego.
buga
¿Y del resto por favor?
¿alguna ayuda?