代码之家  ›  专栏  ›  技术社区  ›  Richard Knop

检查文件是否存在于不同域中而不读取

php
  •  2
  • Richard Knop  · 技术社区  · 14 年前

    $fp = fsockopen($fileUri, 80, $errno, $errstr, 30);
    if (!$fp) {
        // file exists
    }
    fclose($fp);
    
    6 回复  |  直到 12 年前
        1
  •  11
  •   Alex Pliutau    14 年前

    我喜欢这个。它总是很好:

    $url = "http://www.example.com/index.php";
    $header_response = get_headers($url, 1);
    if ( strpos( $header_response[0], "404" ) !== false )
    {
      // FILE DOES NOT EXIST
    }
    else
    {
      // FILE EXISTS!!
    }
    
        2
  •  5
  •   Haim Evgi    14 年前

    看这个 example 还有解释

    $url = "http://www.example.com/index.php";
    $header_response = get_headers($url, 1);
    if ( strpos( $header_response[0], "404" ) !== false )
    {
      // FILE DOES NOT EXIST
    } 
    else 
    {
      // FILE EXISTS!!
    }
    

    file_get_contents("http://example.com/path/to/image.gif",0,null,0,1);
    

    将maxlength设置为1

        3
  •  3
  •   Community Marks    7 年前

    This question 有几个例子你可以用。

    curl_setopt($ch, CURLOPT_NOBODY, true);

        4
  •  3
  •   partoa    14 年前

    http://www.php.net/manual/en/function.fopen.php#98128

    function http_file_exists($url)
    {
        $f=@fopen($url,"r");
        if($f)
        {
            fclose($f);
            return true;
        }
        return false;
    }
    

    我所有的测试都表明它能按预期工作。

        5
  •  3
  •   RobertPitt    14 年前

    类似于:

    function ExternalFileExists($location,$misc_content_type = false)
    {
        $curl = curl_init($location);
        curl_setopt($curl,CURLOPT_NOBODY,true);
        curl_setopt($curl,CURLOPT_HEADER,true);
        curl_exec($curl);
    
        $info = curl_getinfo($curl);
    
        if((int)$info['http_code'] >= 200 && (int)$info['http_code'] <= 206)
        {
            //Response says ok.
            if($misc_content_type !== false)
            {
                 return strpos($info['content_type'],$misc_content_type);
            }
            return true;
        }
        return false;
    }
    

    if(ExternalFileExists('http://server.com/file.avi','video'))
    {
    
    }
    

    或者如果你对分机不确定,那就这样:

    if(ExternalFileExists('http://server.com/file.ext'))
    {
    
    }
    
        6
  •  0
  •   heximal    14 年前

    <?php
          $a = file_get_contents('http://mydomain.com/test.html');
          if ($a) echo('exists'); else echo('not exists');