File_exists if语句没有失败

时间:2014-03-22 21:57:55

标签: php

所以我有这个If语句应该检查文件是否存在,如果它失败了它应该显示一个默认文件但是else没有触发,而是显示“upload //”

    if(file_exists($_SERVER['DOCUMENT_ROOT'] ."/uploads/".$photo['album_id'].'/'.
$photo['photo_filename']) == TRUE) {
//gets image if it exist, this part works
        $imgsrc .= "../uploads/".$photo['album_id'].'/'.$photo['photo_filename'];
    } else {
//gets a default image if it doesn't exist, this doesn't work
       $imgsrc .='../uploads/45/image.jpg"';
    }

所以会发生的事情是文件名是从if状态的第一部分显示还是“uploads //”显示,但未显示的是else部分“../uploads/45/image.jpg”。所以它看起来并没有失败。

2 个答案:

答案 0 :(得分:0)

来自file_exists

的php手册
  

如果filename指定的文件或目录存在,则返回TRUE;否则就错了。

确保文件存在:

$filename = "/uploads/".$photo['album_id'].'/'.$photo['photo_filename'];

$filepath = $_SERVER['DOCUMENT_ROOT'].$filename;

if(file_exists($filepath) && is_file($filepath)){
 $imgsrc = '..'.$filename;
}
else{
 $imgsrc .='../uploads/45/image.jpg';
}

对于file_exists,您不需要== true。你可以if(file_exists($filepath))

答案 1 :(得分:0)

试试这个条件:

 $file = $_SERVER['DOCUMENT_ROOT'] ."/uploads/".$photo['album_id'].'/'.$photo['photo_filename'];    
    if(file_exists($file) && !is_dir($file))