• 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

  • 相关阅读:
    redis 用scan 代替keys 解决百万数据模糊查询超时问题
    集成spring-ldap
    IDEA报Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA随后闪退
    struts2响应文件 struts2下载txt
    QRCodeUtil 二维码生成 解析 带图片与不带图片的二维码
    java 手机号正则表达式 截止2019年6月最新
    Java遍历Map对象的四种方式效率对比
    SpringCloud Alibaba系列(二) Nacos高可用和持久化
    SpringCloud Alibaba系列(二) Nacos配置中心-分类配置
    SpringCloud Alibaba系列(二) Nacos使用
  • 原文地址:https://www.cnblogs.com/ymj0906/p/3117748.html
Copyright © 2020-2023  润新知