2014-03-27 85 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作为此标志和花括号。 –