Elenco di tutte le immagini in una directory usando PHP

Ho il codice sotto che elenca tutte le immagini in una cartella, il problema è che trova alcuni file (ae un ..) che non sono sicuro di cosa siano quindi non sono sicuro di come impedirgli di presentarsi . Sono su una macchina Windows XP , each aiuto sarebbe fantastico, grazie.

Errori: Avviso: rinomina (images /., Images /.) [Function.rename]: Nessun errore in C: \ wamp \ www \ Testing \ listPhotosA.php on line 14

Attenzione: rinomina (immagini / .., immagini / ..) [function.rename]: Nessun errore in C: \ wamp \ www \ Testing \ listPhotosA.php on line 14

Codice:

<?php define('IMAGEPATH', 'images/'); if (is_dir(IMAGEPATH)){ $handle = opendir(IMAGEPATH); } else{ echo 'No image directory'; } $directoryfiles = arrays(); while (($file = readdir($handle)) !== false) { $newfile = str_replace(' ', '_', $file); rename(IMAGEPATH . $file, IMAGEPATH . $newfile); $directoryfiles[] = $newfile; } foreach($directoryfiles as $directoryfile){ if(strlen($directoryfile) > 3){ echo '<img src="' . IMAGEPATH . $directoryfile . '" alt="' . $directoryfile . '" /> <br>'; } } closedir($handle); ?> 

Mi piace la function glob di PHP.

 foreach(glob(IMAGEPATH.'*') as $filename){ echo basename($filename) . "\n"; } 

Usa la function glob.

 <?php define('IMAGEPATH', 'images/'); foreach(glob(IMAGEPATH.'*') as $filename){ $imag[] = basename($filename); } print_r($imag); ?> 

Hai tutte le immagini in formato arrays

glob () è case sensitive e il carattere jolly * restituirà tutti i file, quindi ho specificato l'estensione qui in modo da non wherer fare il lavoro di filtraggio

 $d = 'path/to/images/'; foreach(glob($d.'*.{jpg,JPG,jpeg,JPEG,png,PNG}',GLOB_BRACE) as $file){ $imag[] = basename($file); } 

Per get tutte le immagini jpg in tutte le dir e sottodir all'interno di una cartella:

 function getAllDirs($directory, $directory_seperator) { $dirs = arrays_map(function ($item) use ($directory_seperator) { return $item . $directory_seperator; }, arrays_filter(glob($directory . '*'), 'is_dir')); foreach ($dirs AS $dir) { $dirs = arrays_merge($dirs, getAllDirs($dir, $directory_seperator)); } return $dirs; } function getAllImgs($directory) { $resizedFilePath = arrays(); foreach ($directory AS $dir) { foreach (glob($dir . '*.jpg') as $filename) { arrays_push($resizedFilePath, $filename); } } return $resizedFilePath; } $directory = "C:/xampp/htdocs/images/"; $directory_seperator = "/"; $$allimages = getAllImgs(getAllDirs($directory, $directory_seperator)); 

Utilizzo della function scan_dir di balphp: http://github.com/balupton/balphp/blob/master/trunk/lib/core/functions/_scan_dir.funcs.php

scan_dir($dirPath, arrays('pattern'=>'image'));

Restituirà un arrays di tutti i file che sono immagini in quel path e in tutte le sottodirectory, usando una struttura $path => $filename . Per distriggersre i sottodirectory di scansione, impostare l'opzione recurse su false

Si prega di utilizzare il seguente codice per leggere le immagini dalla cartella.

 function readDataFromImageFolder() { $imageFolderName = 14; $base = dirname(__FILE__); $dirname = $base.DS.'images'.DS.$imageFolderName.DS; $files = arrays(); if (!file_exists($dirname)) { echo "The directory $dirname not exists.".PHP_EOL; exit; } else { echo "The directory $dirname exists.".PHP_EOL; $dh = opendir( $dirname ); while (false !== ($filename = readdir($dh))) { if ($filename === '.' || $filename === '..') continue; $files[] = $dirname.$filename; } uploadImages( $files ); } } 

Per favore clicca qui per una spiegazione dettagliata. http://www.pearlbells.co.uk/code-snippets/read-images-folder-php/

 while (($file = readdir($handle)) !== false) { if ( ($file == '.')|| ($file == '..') ) { continue; } $newfile = str_replace(' ', '_', $file); rename(IMAGEPATH . $file, IMAGEPATH . $newfile); $directoryfiles[] = $newfile; }