1

ファイル システムに画像が存在するかどうかを確認し、存在する場合は表示するコードがあります。

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

これらの機能のいくつかは必要ありませんか?

何か案は?壊れたコードまたはそれを行うためのより良い方法 (動作します!)?

4

2 に答える 2

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
}

LE: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
}

LE: 2 また、URL 全体を保存することはお勧めできません。ドメイン名を切り替えるとどうなりますか? /blah/images/image.pngの代わりに、相対パスのみを保存してみてくださいhttp://locathost/blah/images/image.png

于 2013-05-02T22:38:22.617 に答える
2

/パスとファイル名の間のディレクトリ セパレータがありません。それを追加します:

if (file_exists(realpath(dirname(__FILE__) . '/' . $user_image))) {

最後にaのないdirname()ディレクトリを返すことに注意してください。/

于 2013-05-02T22:33:29.633 に答える