程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP判斷遠程圖片是否存在的幾種方法

PHP判斷遠程圖片是否存在的幾種方法

編輯:關於PHP編程

       這篇文章主要介紹了PHP判斷遠程圖片是否存在的幾種方法,需要的朋友可以參考下

      在做一個圖片預覽中圖的東西,遇到一個問題,就是要判斷遠程文件是否存在(不是同一台服務器)。

      代碼如下:

      代碼如下:

      //方法一

      function file_exists($url)

      {

      $ch = curl_init();

      curl_setopt($ch, curlopt_url,$url);

      curl_setopt($ch, curlopt_nobody, 1); // 不下載

      curl_setopt($ch, curlopt_failonerror, 1);

      curl_setopt($ch, curlopt_returntransfer, 1);

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

      return true;

      else

      return false;

      }

      //方法二

      function file_exists2($url)

      {

      if(file_get_contents($url,0,null,0,1))

      return 1;

      else

      return 0;

      }

      //方法三

      function file_exists($url) {

      $curl = curl_init($url);

      // 不取回數據

      curl_setopt($curl, CURLOPT_NOBODY, true);

      // 發送請求

      $result = curl_exec($curl);

      $found = false;

      // 如果請求沒有發送失敗

      if ($result !== false) {

      // 再檢查http響應碼是否為200

      }

      方法一無論圖片在不在都是返回FALSE;

      方法二windows下可行,LINUX下無論圖片在不在都返加TRUE;

      方法三應該是最合適的

      另外:用get_headers() 方法存在效率問題,建議不使用作為此解決方案

      fsockopen版:

      代碼如下:

      $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);

      通過http狀態碼來判斷文件是否存在,比如,響應 302,301,404等都為不存在,如果是200,304,等可以視為文件存在。

      fopen()方法:

      代碼如下:

      $url = 'http://www.test.com/images/test.jpg';

      if( @fopen( $url, 'r' ) )

      {

      echo 'File Exits';

      }

      else

      {

      echo 'File Do Not Exits';

      }

      ?>

      CURL方法:

      代碼如下:

      $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 '文件不存在';

      }

      ?>

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved