所以我有这个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”。所以它看起来并没有失败。
答案 0 :(得分:0)
来自file_exists
如果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))