While making a picture preview, I encountered a problem, which is to determine whether the remote file exists (not on the same server).
The code is as follows:
Copy codeThe code is as follows:
//Method 1
function file_exists($url )
{
$ch = curl_init();
curl_setopt($ch, curlopt_url,$url);
curl_setopt($ch, curlopt_nobody, 1); // Do not download
curl_setopt ($ch, curlopt_failonerror, 1);
curl_setopt($ch, curlopt_returntransfer, 1);
if(curl_exec($ch)!==false)
return true;
else
return false;
}
//Method 2
function file_exists2($url)
{
if(file_get_contents($url,0,null,0,1 ))
return 1;
else
return 0;
}
//Method 3
function file_exists($url) {
$curl = curl_init($url) ;
//Do not retrieve data
curl_setopt($curl, CURLOPT_NOBODY, true);
//Send request
$result = curl_exec($curl);
$found = false;
// If the request is not sent and fails
if ($result !== false) {
// Check again whether the http response code is 200
}
Method 1 will return FALSE regardless of whether the picture is present or not;
Method 2 is feasible under Windows, and TRUE will be returned under LINUX regardless of whether the picture is present;
Method 3 should be the most appropriate
In addition: use The get_headers() method has efficiency issues and is not recommended as this solution
fsockopen version:
Copy code The code is as follows:
$url = "http://www.baidu.com/img/baidu_sylogo1. gif";
$info = parse_url($url);
$fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
fputs( $fp,"GET {$info['path']} HTTP/1.1rn");
fputs($fp, "Host: {$info['host']}rn");
fputs( $fp, "Connection: closernrn");
$headers = array();
while(!feof($fp)) {
$line = fgets($fp);
if( $line != "rn") {
$headers[] = $line;
}else {
break;
}
}
echo "
print_r($headers);
Use the http status code to determine whether the file exists. For example, responses 302, 301, 404, etc. all mean that the file does not exist. If it is 200, 304, etc., it can be regarded as the file exists.
fopen() method:
Copy code The code is as follows:
$url = 'http://www.test.com/images/test.jpg';
if( @fopen( $url, 'r' ) )
{
echo 'File Exits';
}
else
{
echo 'File Do Not Exits';
}
?>
CURL method:
Copy code The code is as follows:
$url2 = 'http://www.test.com/test. jpg';
$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_HEADER, 1) ;
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
//echo $ contents;
if (preg_match("/404/", $contents)){
echo 'File does not exist';
}
?>
http://www.bkjia.com/PHPjc/764617.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/764617.htmlTechArticleWhile making a picture preview, I encountered a problem, which is to determine whether the remote file exists (not same server). The code is as follows: Copy the code The code is as follows: /...