方法一(需要开启allow_url_fopen):
1 |
<?php |
3 |
$fileExists = @file_get_contents($url, null, null, -1, 1) ? true : false; |
4 |
echo $fileExists; //返回1,就说明文件存在。 |
5 |
?><b> </b> |
方法二(需要服务器支持Curl组件):
01 |
<?php |
02 |
function check_remote_file_exists($url) { |
03 |
$curl = curl_init($url); // 不取回数据 |
04 |
curl_setopt($curl, CURLOPT_NOBODY, true); |
05 |
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); // 发送请求 |
06 |
$result = curl_exec($curl); |
07 |
$found = false; // 如果请求没有发送失败 |
08 |
if ($result !== false) { |
09 |
10 |
/** 再检查http响应码是否为200 */ |
11 |
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); |
12 |
if ($statusCode == 200) { |
13 |
$found = true; |
14 |
} |
15 |
} |
16 |
curl_close($curl); |
17 |
18 |
return $found; |
19 |
} |
20 |
22 |
echo check_remote_file_exists($url); // 返回1,说明存在。 |
23 |
24 |
?> |
+++++++++++++++++++++++++++++++++++++++
01 |
<?php |
02 |
03 |
/* |
04 |
函数:remote_file_exists |
05 |
功能:判断远程文件是否存在 |
06 |
参数: $url_file -远程文件URL |
07 |
返回:存在返回true,不存在或者其他原因返回false |
08 |
*/ |
09 |
function remote_file_exists($url_file){ |
10 |
//检测输入 |
11 |
$url_file = trim($url_file); |
12 |
if (empty($url_file)) { return false; } |
13 |
$url_arr = parse_url($url_file); |
14 |
if (!is_array($url_arr) || empty($url_arr)){return false; } |
15 |
16 |
//获取请求数据 |
17 |
$host = $url_arr['host']; |
18 |
$path = $url_arr['path'] ."?".$url_arr['query']; |
19 |
$port = isset($url_arr['port']) ?$url_arr['port'] : "80"; |
20 |
21 |
//连接服务器 |
22 |
$fp = fsockopen($host, $port, $err_no, $err_str,30); |
23 |
if (!$fp){ return false; } |
24 |
25 |
//构造请求协议 |
26 |
$request_str = "GET ".$path."HTTP/1.1\r\n"; |
27 |
$request_str .= "Host:".$host."\r\n"; |
28 |
$request_str .= "Connection:Close\r\n\r\n"; |
29 |
30 |
//发送请求 |
31 |
fwrite($fp,$request_str); |
32 |
$first_header = fgets($fp, 1024); |
33 |
fclose($fp); |
34 |
35 |
//判断文件是否存在 |
36 |
if (trim($first_header) == ""){ return false;} |
37 |
if (!preg_match("/200/", $first_header)){ |
38 |
return false; |
39 |
} |
1 |
<p><strong>函数描述及例子</strong></p> |
2 |
<p></p> |
3 |
<pre class="brush:php; toolbar: true; auto-links: true;"><? |
4 |
//测试代码 |
5 |
$str_url = 'http://127.0.0.2/getfile.php?id=404'; |
6 |
$exits = remote_file_exists($str_url); |
7 |
echo $exists ? "存在" : "不存在"; |
8 |
?><b> </b></pre><b><br> |
9 |
</b><p></p> |
附送一个JS的判断
01 |
<script language= "网页特效 "> |
02 |
function geturl(url) |
03 |
{ |
04 |
var xmlhttp = new activexobject( "microsoft.xmlhttp "); |
05 |
xmlhttp.open( "get ",url,false); |
06 |
xmlhttp.send(); |
07 |
if (xmlhttp.readystate==4) |
08 |
alert((xmlhttp.status==200)? "文件存在 ": "文件不存在 "); |
09 |
} |
10 |
</script> |
11 |
请输入文件地址: <input name= "file " id= "file " value= "http://www.111cn.net "> |
12 |
<button onclick= "geturl(file.value) "> 检测地址 </button> |