zoukankan      html  css  js  c++  java
  • PHP判断远程文件是否存在

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    /*
     函数:remote_file_exists
     功能:判断远程文件是否存在
     参数: $url_file -远程文件URL
     返回:存在返回true,不存在或者其他原因返回false
    */
    function remote_file_exists($url_file){
        //检测输入
        $url_file = trim($url_file);
        if (empty($url_file)) { return false; }
        $url_arr parse_url($url_file);
        if (!is_array($url_arr) || empty($url_arr)){return false; }
     
        //获取请求数据
        $host $url_arr['host'];
        $path $url_arr['path'] ."?".$url_arr['query'];
        $port = isset($url_arr['port']) ?$url_arr['port'] : "80";
     
        //连接服务器
        $fp fsockopen($host$port$err_no$err_str,30);
        if (!$fp){ return false; }
     
        //构造请求协议
        $request_str "GET ".$path."HTTP/1.1";
        $request_str .= "Host:".$host."";
        $request_str .= "Connection:Close";
     
        //发送请求
        fwrite($fp,$request_str);
        $first_header fgets($fp, 1024);
        fclose($fp);
     
        //判断文件是否存在
        if (trim($first_header) == ""){ return false;}
        if (!preg_match("/200/"$first_header)){
            return false;
        }
     
        return true;
    }
    ?>

    函数描述及例子

    1
    2
    3
    4
    5
    6
    <?
        //测试代码
        $str_url 'http://127.0.0.2/viewarticle.php?id=119617';
        $exits = remote_file_exists($str_url);
        echo $exists "Exists" "Not exists";
    ?>

    方法一(需要开启allow_url_fopen):

    1
    2
    3
    4
    5
    <?php
        $url "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip";
        $fileExists = @file_get_contents($url, null, null, -1, 1) ? true : false;
        echo $fileExists//返回1,就说明文件存在。
    ?>

    方法二(需要服务器支持Curl组件):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php
    function check_remote_file_exists($url) {
        $curl = curl_init($url); // 不取回数据
        curl_setopt($curl, CURLOPT_NOBODY, true);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); // 发送请求
        $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;
    }
     
    $url "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip";
    echo check_remote_file_exists($url); // 返回1,说明存在。
     
    ?>
  • 相关阅读:
    【设计模式】六大原则
    【HTML5】表单属性
    【HTML5】表单元素
    【HTML5】input类型
    【HTML5】Server-Sent服务器发送事件
    【HTML5】Web Workers
    【HTML5】Application Cache应用程序缓存
    【HTML5】Web存储
    【HTML5】地理定位
    【HTML5】Canvas和SVG的区别
  • 原文地址:https://www.cnblogs.com/liliuguang/p/9927709.html
Copyright © 2011-2022 走看看