I have a code here that gets all images in a folder including subfolders. What can i do to fetch images only from the folder but not the subfolder?
$dirname = "media/images/iconized/";
$images = glob($dirname."*.png");
foreach($images as $image) {
echo '<img src="'.$image.'" /><br />';
}
$dirname = "media/images/iconized/";
$images = glob($dirname."*.png");
foreach($images as $image) {
if(!is_dir($image))
echo '<img src="'.$image.'" /><br />';
}
I used directory iterator with filter iterator to get file list of specific extension. Have a look on below solution. You can use recursivedirectory iterator to get files recursively.
class FileExtFilter extends FilterIterator
{
private $fileext;
public function __construct(Iterator $iterator, $fileext)
{
parent::__construct($iterator);
$this->fileext = $fileext;
}
public function accept()
{
$file = $this->getInnerIterator()->current();
return preg_match("/\.({$this->fileext})$/", $file);
}
}
function getFilteredFileList($dir, $ext)
{
$retval = array();
// add trailing slash if missing
if(substr($dir, -1) != "/") $dir .= "/";
// open directory for reading
$d = new DirectoryIterator($dir) or die("getFilteredFileList: Failed opening directory $dir for reading");
$iterator = new FileExtFilter($d, $ext);
foreach($iterator as $fileinfo) {
if($fileinfo->isDot()) continue;
$retval[] = array(
'name' => "{$dir}{$fileinfo}",
'type' => ($fileinfo->getType() == "dir") ? "dir" : mime_content_type($fileinfo->getRealPath()),
'size' => $fileinfo->getSize(),
'lastmod' => $fileinfo->getMTime()
);
}
return $retval;
}
$list = getFilteredFileList('directorypath', 'png|jpeg|pdf');
print_r($list);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.