Note: When making a picture preview, I encountered a problem, which is to determine whether the remote file exists (not on the same server).
Examples, multiple methods to determine whether remote images exist.
-
-
//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);
- // Not taken Return data
- curl_setopt($curl, CURLOPT_NOBODY, true);
- //Send request
- $result = curl_exec($curl);
- $found = false;
- //If the request is not sent, it fails
- if ($result !== false) {
- // Check again whether the http response code is 200
- }
-
Copy code
Code description:
Method 1, returns FALSE regardless of whether the picture is present or not;
Method 2 is feasible under Windows. Under LINUX, TRUE will be returned regardless of whether the picture is present or not;
Method three should be the most suitable
In addition: There are efficiency issues with the get_headers() method, and it is recommended not to use this solution.
fsockopen version:
-
-
- $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;
- }
- }
- , 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.
1. fopen() method:
-
-
-
$url = 'http://www.test.com/images/test.jpg'; if( @ fopen( $url, 'r' ) ) { echo 'File Exits'; } else- {
- echo 'File Do Not Exits';
- }
- ?>
-
-
-
- Copy Code
-
-
- 2, CURL method:
-
-
-
$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';
- }
- ?>
-
-
-
- Copy code
-
-
- The methods and examples introduced above to determine whether a remote image exists are the most practical and practical ones that I have seen recently. The most comprehensive example of detecting remote files, so I recommend it to all my friends at Programmer’s Home.
-
-
-
|