Home > Backend Development > PHP Tutorial > How to determine whether a remote image exists in PHP

How to determine whether a remote image exists in PHP

WBOY
Release: 2016-07-25 09:13:08
Original
1023 people have browsed it

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.

  1. //Method 1

  2. function file_exists($url)
  3. {
  4. $ch = curl_init();
  5. curl_setopt($ch, curlopt_url,$url);
  6. curl_setopt($ch, curlopt_nobody, 1); // Do not download
  7. curl_setopt($ch, curlopt_failonerror, 1);
  8. curl_setopt($ch, curlopt_returntransfer, 1);

  9. if(curl_exec( $ch)!==false)

  10. return true;
  11. else
  12. return false;
  13. }

  14. //Method 2

  15. function file_exists2($url)
  16. {
  17. if(file_get_contents($url ,0,null,0,1))
  18. return 1;
  19. else
  20. return 0;
  21. }
  22. //Method 3
  23. function file_exists($url) {
  24. $curl = curl_init($url);
  25. // Not taken Return data
  26. curl_setopt($curl, CURLOPT_NOBODY, true);
  27. //Send request
  28. $result = curl_exec($curl);
  29. $found = false;
  30. //If the request is not sent, it fails
  31. if ($result !== false) {
  32. // Check again whether the http response code is 200
  33. }

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:

  1. $url = "http://www.baidu.com/img/baidu_sylogo1.gif";

  2. $info = parse_url($url);

  3. $fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
  4. fputs($fp,"GET {$info['path']} HTTP/ 1.1rn");
  5. fputs($fp, "Host: {$info['host']}rn");
  6. fputs($fp, "Connection: closernrn");
  7. $headers = array();
  8. while (!feof($fp)) {
  9. $line = fgets($fp);
  10. if($line != "rn") {
  11. $headers[] = $line;
  12. }else {
  13. break;
  14. }
  15. }

  16. , 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
  1. {
  2. echo 'File Do Not Exits';
  3. }
  4. ?>

  5. Copy Code
  6. 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);
  1. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

  2. $contents = curl_exec($ch);

  3. //echo $contents;
  4. if (preg_match("/404/", $contents)){
  5. echo 'file Does not exist';
  6. }
  7. ?>

  8. Copy code
  9. 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.

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template