PHP判断远程路径是否存在

方法一(需要开启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>

http://blog.woodbunny.com/php/38.html

posted @ 2013-06-04 19:30  江哥哥  阅读(455)  评论(0编辑  收藏  举报