2014-05-15 65 views
0

我不知道這應該是正確的標題。下面我有這個問題。圖片將不會顯示RecursiveDirectoryIterator

我使用這個

$dataDir = dirname(__FILE__).'/thumbnails/'; 

$rdi = new RecursiveDirectoryIterator($dataDir); 
$it = new RecursiveIteratorIterator($rdi); 

      <?php foreach($it as $oneThing) { ?>   

      <?php  if (is_file($oneThing)) { ?> 

      <?php  
          $parent_info = $it->getFilename(); 

          $temp = explode('.', $parent_info); 
          $ext = array_pop($temp); 
          $name = implode('.', $temp); 

          $filter1 = str_replace("thumbnail"," ",$name);      
          $filter2 = preg_replace('/[^a-zA]/','_', $filter1); 

          $dirName = rtrim($filter2, '_');  
          $dirName2 = preg_replace('/[^a-zA]/',' ', $dirName);  
          $text_title = ucwords(strtolower($dirName2)); 
          $text_category = ucwords(strtolower($rdi)); 

      ?> 
          <div class="portfolio <?php echo $rdi; ?>" data-cat="<?php echo $rdi; ?>"> 
          <a href="single-gallery.php?imgcat=<?php echo $rdi; ?>&dirname=<?php echo $dirName; ?>"> 
           <div class="portfolio-wrapper">    
            <img src="<?php echo $oneThing; ?>" alt="" /> 
            <div class="label"> 
             <div class="label-text"> 
              <a class="text-title"><?php echo $text_title; ?></a> 
              <span class="text-category"><?php echo $text_category; ?></span> 
             </div> 
             <div class="label-bg"></div> 
            </div> 
           </div> 
          </a>  
          </div>    

      <?php  } ?> 

       <?php } ?>  

獲得對目錄和子目錄的圖像。但我無法展示圖片。

我在wordpress站點設置了這個。

這是將生成的鏈接。

<img src="/home/content/10/11383810/html/alteverswp/wp-content/themes/canvas/thumbnails/custom/cr_indian_wells/cr_indian_wellsthumbnail(1).jpg" alt=""> 

什麼可能是使圖像正確顯示的正確方法。

+0

_other code here_顯示代碼。 –

+0

@RahilWazir我現在加了完整的代碼。 –

回答

1

您正在使用絕對路徑而不是相對路徑。這裏是一個工作示例:

function directoryScan($dir, $onlyfiles = false, $fullpath = false) { 
    if (isset($dir) && is_readable($dir)) { 
     $dlist = Array(); 
     $dir = realpath($dir); 
     if ($onlyfiles) { 
      $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); 
     } else { 
      $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::SELF_FIRST); 
     } 

     foreach($objects as $entry => $object){ 
      if (!$fullpath) { 
       $entry = str_replace($dir, '', $entry); 
      } 

      $dlist[] = $entry; 
     } 

     return $dlist; 
    } 
} 

// return contents of ‘Folder’ – Relative Paths and Only Files. 
$result = directoryScan('folder', false, true); 
+0

謝謝@mister,但我無法讓代碼使用這個工作。什麼應該是正確的方式? –

+0

@JanBantolinay試試這個:'

+0

我試過這個代碼,但是它是一樣的 –

0

使用$ it-> getType();獲得'jpg'這樣的延伸。

再次思考'絕對路徑''相對路徑'。 如: URL http://test/image.jpg

絕對C:\xampp\htdocs\test\image.jpg

相對\test\image.jpg(做\ htdocs中SCANDIR時)

進入一個瀏覽器,並期待與螢火蟲,從那裏的圖像加載。

看看/home/..之前的部分是否有錯誤。

然後,您必須更改您的腳本, 即生成正確的URL_PATH。

你的腳本中最大的錯誤是: 使用$ it-> getFilename();當你必須使用$ oneThing-> getFilename();

看吧(第一例): http://www.php.net/manual/de/class.recursiveiteratoriterator.php

理解的方式 'recursiveiteratoriterator' 和「splfileobject的工作,纔去上。

希望有所幫助!

+0

是的,這就是我想要實現的將它變成一個相對路徑,但我不知道我怎麼能這樣做,我試着修改代碼,如上所述,但它仍然是我得到的相同路徑 –

+0

請記住,相對路徑必須符合當前網址或使用meta BASE標記來覆蓋BASE_URL,但可以打破css,js加載和其他相關鏈接。 – user3641379

+0

假設您位於www.foo.com/test/index.php然後www.foo。com/test/home/content/10/11383810/html/alteverswp/wp-content/themes/canvas/thumbnails/custom/cr_indian_wells/cr_indian_wellsthumbnail(1).jpg將是圖片的網址 – user3641379