只显示图片

时间:2014-09-12 16:56:00

标签: php

我有这个脚本:

    $uploadsDirectory = dirname($_SERVER['SCRIPT_FILENAME']) .'/slides/head/';  
if ($handle = opendir($uploadsDirectory)) {
    $uplo = array();
while (false !== ($file = readdir($handle))) {
    array_push($uplo, $file);}
    sort($uplo,SORT_NATURAL | SORT_FLAG_CASE);
    $user = array();
foreach($uplo as $fname) {  
if($fname != ".." && $fname != "."){
if(substr($fname,0,1) != "_")
    echo "<div class='bgitem' id='head'>$fname</div>";
else
    array_push($user, "$fname");}}
    closedir($handle);}

它工作正常,但我怎么能这样它只显示图片? (我有其他文件不是照片,所以它显示的是破碎的图片。)

2 个答案:

答案 0 :(得分:0)

为您解决方案:

$extension = explode(".", $fname);
$extension = (isset($extension) && count($extension) > 0)?strtolower($extension[count($extension) -1]):null;

if(in_array($extension, ['jpg', 'jpeg', 'png', 'gif'])){
    //Show the image

}else{
    //dont show image
}

答案 1 :(得分:0)

一种简单的方法是让它测试文件是否是您测试文件是父目录还是当前目录(if($fname != ".." && $fname != "."){

的同一行中的图像

您可以使用getimagesize()来确定文件是否是任何类型的图像。如果它不是图像,则返回零。

    $uploadsDirectory = dirname($_SERVER['SCRIPT_FILENAME']) .'/slides/head/';  
if ($handle = opendir($uploadsDirectory)) {
    $uplo = array();
while (false !== ($file = readdir($handle))) {
    array_push($uplo, $file);}
    sort($uplo,SORT_NATURAL | SORT_FLAG_CASE);
    $user = array();
foreach($uplo as $fname) {  
if($fname != ".." && $fname != "." && getimagesize($fname) != 0){ //Tests if file is an iamge
if(substr($fname,0,1) != "_")
    echo "<div class='bgitem' id='head'>$fname</div>";
else
    array_push($user, "$fname");}}
    closedir($handle);}