我有一段代码可以检查文件系统中是否存在图像,如果存在,则显示它。
if (file_exists(realpath(dirname(__FILE__) . $user_image))) {
echo '<img src="'.$user_image.'" />';
}
else {
echo "no image set";
}
如果我回复$user_image
,请将链接复制并粘贴到浏览器中,图像就在那里。
但是,在这里,始终会到达“无图像集”。
$user_image
内容为http://localhost:8888/mvc/images/users/1.jpg
其中一些功能不需要?
有什么想法吗? 破碎的代码或更好的方法(有效!)?
答案 0 :(得分:2)
您错过了路径和文件名之间的目录分隔符/
。添加它:
if (file_exists(realpath(dirname(__FILE__) . '/' . $user_image))) {
请注意,dirname()
会在结尾处返回目录而不是 a /
。
答案 1 :(得分:2)
除了我认为正确的@ hek2mgl答案之外,我还认为你应该切换到is_file()
而不是file_exists()
。
此外,你可以更进一步,如:
if(is_file(dirname(__FILE__). '/' . $user_image) && false !== @getimagesize(dirname(__FILE__) . '/'. $user_image)) {
// image is fine
} else {
// it isn't
}
L.E:1个
哦,太好了,现在你告诉我们$ user_image包含什么?难道你不能从一开始就这样做,对吗?
所以你必须:
$userImagePath = parse_url($user_image, PHP_URL_PATH);
$fullPath = dirname(__FILE__) . ' / ' . $userImagePath;
if($userImagePath && is_file($fullPath) && false !== @getimagesize($fullPath)) {
// is valid
}else {
// it isn't
}
L.E:2
此外,存储整个网址不是一个好习惯,当您切换域名时会发生什么?尝试仅存储相对路径,例如/blah/images/image.png
而不是http://locathost/blah/images/image.png