首页 > php图像处理 > PHP判断远程图片或文件或url是否存在

PHP判断远程图片或文件或url是否存在

在php中要远程图片存不存在我们可以直接相关函数就可以了,像有curl,fopen之类的函数都可以快速的检测出来, 下面整理了几个例子,希望对各位有帮助.

例子一,代码如下:

<?php
//判断远程文件  
function check_remote_file_exists($url)  
{  
$curl = curl_init($url);  
// 不取回数据  
curl_setopt($curl, CURLOPT_NOBODY, true);  
// 发送请求  
$result = curl_exec($curl);  
$found = false;  
// 如果请求没有发送失败  
if ($result !== false) {  
// 再检查http响应码是否为200  
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);  
if ($statusCode == 200) {  
$found = true;  
}  
}  
curl_close($curl); 
 
return $found;  
}

当然也有很多其它方法,或多或少有些限制和缺陷,如:

(1),使用fopen()函数,它要在allow_url_open开启的状态下,否则会报错,代码如下:

$url = 'http://www.phprm.com /img/qrcode_for_phpddt.JPG'; 
if(@fopen($url, 'r')) { 
echo '文件存在'; 
} else { 
echo '文件不存在'; 
}

(2),get_headers取得服务器响应一个 HTTP 请求所发送的所有标头,效率较低,你可以测试下,代码如下:

$url = 'http://www.phprm.com /img/qrcode_for_phpddt.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()函数,代码如下:
 $opts = array( 
'http'=>array( 
'timeout'=>3, 
) 
); 
$context = stream_context_create($opts); 
$resource = @file_get_contents('http://www.phprm.com /img/qrcode_for_phpddt.JPG', false, $context); 
 
if($resource) { 
echo '文件存在'; 
} else { 
echo '文件不存在'; 
}


本文地址:http://www.phprm.com/tuxiang/fs5925.html

转载随意,但请附上文章地址:-)

标签:php远程图片 php远程url

发表留言