2011-01-21 57 views
1

所有文件使用列表中的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 
) 

幫助!我在這裏放鬆心情。

+1

這是至少四次。請在http://stackoverflow.com/search?q=list+all+files+in+a+directory+php – Gordon 2011-01-21 13:58:14

+0

找到您的答案[PHP列出目錄中的所有文件](http://stackoverflow.com/questions/3826963/php-list-all-files-in-directory) – Gordon 2011-01-21 13:58:41

回答

6

難道不如$d->close();以外 while循環?

我認爲這是原因 - 找到第一張圖片後,資源將被關閉,下一次讀取()將失敗。

1

你可以使用glob,它很簡單:

$path = 'images/blog/'; 
$files = glob($path.'*.{jpg,gif,png}', GLOB_BRACE); 
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; 
    } 
} 

爲symfony1.2 2,有一篇博客文章被法比安斯基Potencier這裏:http://fabien.potencier.org/article/43/find-your-files

相關問題