使用symfony我正在尝试创建一个列出Web文件夹中所有图像的页面
我创建了以下操作:
$dir = 'images/blog';
$fulldir = "{$_SERVER['DOCUMENT_ROOT']}/$dir";
$d = @dir($fulldir) or die('Failed opening directory for reading');
while(false !== ($entry = @$d->read()))
{
$this->imagesBlog[] = array(
"file" => "/$dir/$entry",
"size" => getimagesize("$fulldir/$entry"));
$d->close();
}
以下模板:
foreach($imagesBlog as $img)
echo '<img class="photo" src="'.$img['file'].'" ' . $img['size'][3].'>'."\n";
这似乎有效,但只返回包含多个文件的文件夹中的一张图像。
print_r($imagesBlog):
sfOutputEscaperArrayDecorator Object
(
[count:sfOutputEscaperArrayDecorator:private] => 1
[value:protected] => Array
(
[0] => Array
(
[file] => /images/blog/FM-stupidest.png
[size] => Array
(
[0] => 300
[1] => 252
[2] => 3
[3] => width="300" height="252"
[bits] => 8
[mime] => image/png
)
)
)
[escapingMethod:protected] => esc_specialchars
)
帮助!我在这里失去了理智。
答案 0 :(得分:6)
在while循环中调用$d->close();
外不是更好吗?
我认为这就是原因 - 在找到第一张图片后,资源将被关闭,下一张read()将失败。
答案 1 :(得分:2)
对于在寻找明确答案时遇到这个帖子的其他人,有一个Symfony类可以为你解决这个问题:sfFinder(适用于Symfony 1.4)。
http://www.symfony-project.org/api/1_4/sfFinder
$finder = new sfFinder;
foreach($finder->in(sfConfig::get('sf_web_dir') . '/images/projects/') AS $file) {
if(is_file($file)) {
echo $file;
}
}
对于Symfony 2,Fabien Potencier在此发表了一篇博文:http://fabien.potencier.org/article/43/find-your-files
答案 2 :(得分:1)
您可以使用glob,这很简单:
$path = 'images/blog/';
$files = glob($path.'*.{jpg,gif,png}', GLOB_BRACE);