我通常使用curl判斷判斷遠(yuǎn)程圖片或文件是否存在:
/**
* @link http://www.phpddt.com
*/
function url_exists($url) {
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
//不下載
curl_setopt($ch, CURLOPT_NOBODY, 1);
//設(shè)置超時(shí)
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($http_code == 200) {
return true;
}
return false;
}
當(dāng)然也有很多其它方法,或多或少有些限制和缺陷,如:
(1)使用fopen()函數(shù),它要在allow_url_open開(kāi)啟的狀態(tài)下,否則會(huì)報(bào)錯(cuò)。
$url = '/upload/otherpic61/108014.jpg';
if(@fopen($url, 'r')) {
echo '文件存在';
} else {
echo '文件不存在';
}
(2)get_headers取得服務(wù)器響應(yīng)一個(gè) HTTP 請(qǐng)求所發(fā)送的所有標(biāo)頭,效率較低,你可以測(cè)試下。
$url = '/upload/otherpic61/108014.jpg';
stream_context_set_default(
array(
'http' => array(
'timeout' => 1,
)
)
);
$headers = get_headers($url);
if(preg_match('/200/',$headers[0])) {
echo '文件存在';
} else {
echo '文件不存在';
}
(3)file_get_contents()函數(shù)
$opts = array(
'http'=>array(
'timeout'=>3,
)
);
$context = stream_context_create($opts);
$resource = @file_get_contents('/upload/otherpic61/108014.jpg', false, $context);
if($resource) {
echo '文件存在';
} else {
echo '文件不存在';
}
瀏陽(yáng)網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,瀏陽(yáng)網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為瀏陽(yáng)上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的瀏陽(yáng)做網(wǎng)站的公司定做!