画像ファイルの存否を確認して、表示する方法

画像ファイルの存否を確認して、ダウンロードする方法の親戚。


file_existsは、そのサーバで取り扱うことのできるファイルが対象。http接続して、ファイルの存否を確認するなんてことはしてくれません。
そこでその対処法です。


PEARHTTP_Requestを使います。


▽Manual :: HTTP レスポンスからの情報を評価する
 http://pear.php.net/manual/ja/package.http.http-request.response-eval.php


ここにある、「レスポンスコードをチェックする」が参考になりますね。
レスポンスコードが200だったら、画像ファイルがあるということです。

<?php
//以上略
$req = new HTTP_Request("http://example.com/images/{$itemid2}/{$itemid}.jpg");
$req->sendRequest();
if ($req->getResponseCode() == 200){
	$imgtag	= <<<EOT
<img border="0" src="http://example.com/images/{$itemid2}/{$itemid}.jpg">
EOT;
}
//以下略
?>


したがって上記のようにすると、$imgtagを任意の場所に埋め込むことで、期待する場所に画像ファイルさえあれば表示させることができます。期待する場所に画像ファイルがなければタグそのものが表示されないので、OK。


もちろん直リンクでの画像の表示は相手のサーバに想定外の負荷をかけることにもなるので、許諾を得た上でやるべきでしょう。ご注意ください。