2014-03-27 104 views
0

我已經將這兩個腳本從stackoverflow數據庫中取出,用於從文件夾插入圖像。兩者都「一半正常工作。用於插入圖像的PHP腳本

<?php 

$image_dir = 'uploads/images/'; 
$per_column = 10;  

$validExt = array(
    'png' => 'image/png', 
    'jpeg' => 'image/jpeg', 
    'jpg' => 'image/jpg', 
    'gif' => 'image/gif', 
); 

if ($handle = opendir($image_dir)) { 
    while (false !== ($file = readdir($handle))) 
    { 
     $ext = strtolower(substr($file, -3)); 
     if (isset($validExt[$ext])) 
     { 
      $stats = stat($image_dir.$file); 
      $files[$stats['mtime']] = $file; 
     } 
    } 
    closedir($handle); 
} 

$count = 0; 
krsort($files); 

$cnt = count($files); 

if($cnt) 
{ 
    foreach($files as $file) 
    { 
     $count++; 
     echo '<li><img src="' . $image_dir . $file . '" width="20" height="20" title="' . substr($file, 0, -4) . '"/></li>'.chr(10); 
     if($count % $per_column == 0) { echo '<div class="clear"></div>'; } 
    } 
} 
else 
{ 
    echo 'no pictures yet...'; 
} 
?> 

這一個輸出文件,但是當有文件夾中沒有圖像,我得到這個錯誤。 '警告:krsort()期望參數1是數組,null給定'

下面的這一個不會輸出文件夾中的圖像。我也沒有收到錯誤消息。如果文件夾爲空,但它呼應「無畫面又......」

<?php 
$image_dir = 'uploads/images/'; 
$per_column = 10;  

$files = glob($image_dir . "*.jpg|png|gif|jpeg"); 

if(count($files)) 
{ 
foreach($files as $file) 
{ 
    $count++; 
    echo '<li><img src="',$image_dir,$file,'" width="20" height="20" title="',$file,'"/></li>'; 
    if($count % $per_column == 0) { echo '<div class="clear"></div>'; } 
} 
} 
else 
{ 
echo 'no pictures yet...'; 
} 
?> 
+0

請看看:http://stackoverflow.com/questions/22400067/image-upload-not-responding-no-access-to-files/22400654#22400654如果y ou需要多張圖片才能上傳我也有一個腳本 – SuperDJ

回答

0

在第一個腳本,打開目錄「上傳/圖片」,但如果文件夾是空的,而經過所有文件永遠不會執行,$ files變量永遠不會被初始化,這就是爲什麼你會得到這個錯誤。

嘗試循環之前初始化$文件變量,像這樣:

$files = array() 

在您使用第二之一,代替呼應由於該圖像時,我覺得你只得到「/> </LI>打印。嘗試用更換

編輯

試圖調用水珠像這樣:

glob($image_dir."*.{jpg,png,jpeg}", GLOB_BRACE); 
+0

感謝您的回覆。 你是第一個正確的。 替換後,我仍然沒有得到第二個,。 – ducsu

+0

這是因爲glob不能像正則表達式那樣工作。管道字符沒有特殊含義,您需要使用GLOB_BRACE作爲此標誌和花括號。 –