ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでリモート ファイルが存在するかどうかを確認するいくつかの方法

PHP_PHP チュートリアルでリモート ファイルが存在するかどうかを確認するいくつかの方法

WBOY
WBOYオリジナル
2016-07-14 10:12:131309ブラウズ

画像のプレビューを作成しているときに、リモート ファイルが (同じサーバー上にない) 存在するかどうかを確認するという問題が発生しました。

コードは次のとおりです:
0102030405060708091011121314151617181920212223242526272829303132333435 //メソッド 1 関数
file_exists($url){$ch
=curl_init();curl_setopt($ch,
curlopt_url,$url);curl_setopt($ch,
curlopt_nobody、1) //
;
curl_setopt($ch,
)をダウンロードしないでください
curlopt_failonerror, 1);curl_setopt($ch,
curlopt_returntransfer, 1); if(curl_exec($ch)!==false)return
true;elsereturn
false;} //メソッド 2 関数
file_exists2($url){if(file_get_contents($url,0,null,0,1))return
1;そうでなければ戻る
0;}//メソッド 3 の関数
file_exists($url)
{$カール
=curl_init($url);//
データを取得しませんcurl_setopt($curl,
)
CURLOPT_NOBODY、本当) //
;
リクエスト $result を送信
=curl_exec($curl);$見つかった
= false;//
リクエストが送信されない場合、リクエストは失敗します
($結果
!== false) {//
http レスポンス コードが 200 であるかどうかを再度確認します}
メソッド 1 は、画像が存在するかどうかに関係なく FALSE を返します。
方法 2 は Windows で実行可能です。LINUX では、画像が存在するかどうかに関係なく、TRUE が返されます。
方法 3 が最適です
さらに: get_headers() メソッドの使用には効率の問題があるため、この解決策として使用しないことをお勧めします
fsockopen バージョン:
01020304050607080910111213141516171819 $url
= "http://www.baidu.com/img/baidu_sylogo1.gif";
= parse_url($url);
= fsockopen($info['host'],
80,$errno,
$エラー、
30); fputs($fp,"GET
)
{$info['path']} HTTP/1.1rn"); fputs($fp,
)
「ホスト:
{$info['host']}rn"); fputs($fp,
)
「接続:
closernrn"); $headers
= array(); while(!feof($fp))
{ $line
= fgets($fp); if($line
)
!= "rn")
{ $headers[]
= $line }else
{ ブレーク } } エコー
"
";
httpステータスコードを使用してファイルが存在するかどうかを判断します。たとえば、応答302、301、404などはすべてファイルが存在しないことを意味します。200、304などの場合は、ファイルが存在しないと見なされます。ファイルが存在しています。
fopen() メソッド:
010203040506070809101112
= 'http://www.test.com/images/test.jpg';
@fopen(
$url、
「る」
) ) { エコー
'ファイルが終了' } else else { echo
'ファイルが存在しません' } ?>
カールメソッド:
01020304050607080910111213141516
= 'http://www.test.com/test.jpg';
=カール_init();
= 10;
($ch、
)
CURLOPT_URL, $url2);
CURLOPT_HEADER、1);
($ch、
)
CURLOPT_RETURNTRANSFER、1);
($ch、
)
CURLOPT_CONNECTTIMEOUT、$timeout);
=curl_exec($ch); //エコー
;
$コンテンツの場合
(preg_match("/404/",
$content)){ エコー
'ファイルが存在しません' }

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477216.html技術記事画像のプレビューを作成しているときに、リモート ファイルが (同じサーバー上にない) 存在するかどうかを確認するという問題が発生しました。 コードは次のとおりです: 01020304050607080910111213141...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。