How to check if a file exists on an external server

How to check if a file exists on an external server? I have a url http://logs.com/logs/log.csv "and I have a script on another server to check if this file exists. I tried

$handle = fopen("http://logs.com/logs/log.csv","r"); if($handle === true){ return true; }else{ return false; } 

and

 if(file_exists("http://logs.com/logs/log.csv")){ return true; }else{ return false; } 

These methods just don't work.

+6
php
source share
4 answers
+3
source share
 function checkExternalFile($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_NOBODY, true); curl_exec($ch); $retCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return $retCode; } $fileExists = checkExternalFile("http://example.com/your/url/here.jpg"); // $fileExists > 400 = not found // $fileExists = 200 = found. 
+8
source share

This should work:

 $contents = file_get_contents("http://logs.com/logs/log.csv"); if (strlen($contents)) { return true; // yes it does exist } else { return false; // oops } 

Note: It is assumed that the file is not empty.

+3
source share
  <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 4file dir); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); $data = curl_exec($ch); curl_close($ch); preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches); //check for HTTP headers $code = end($matches[1]); if(!$data) { echo "file could not be found"; } else { if($code == 200) { echo "file found"; } elseif($code == 404) { echo "file not found"; } } ?> 
+1
source share

All Articles