源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP判断远程图片是否存在的几种方法

  • 时间:2021-05-04 00:00 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP判断远程图片是否存在的几种方法
在做一个图片预览中图的东西,遇到一个问题,就是要判断远程文件是否存在(不是同一台服务器)。 代码如下:
[u]复制代码[/u] 代码如下:
//方法一 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版:
[u]复制代码[/u] 代码如下:
  $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.1\r\n");     fputs($fp, "Host: {$info['host']}\r\n");     fputs($fp, "Connection: close\r\n\r\n");     $headers = array();     while(!feof($fp)) {     $line = fgets($fp);     if($line != "\r\n") {     $headers[] = $line;     }else {     break;     }     }     echo "<pre>";     print_r($headers);
通过http状态码来判断文件是否存在,比如,响应 302,301,404等都为不存在,如果是200,304,等可以视为文件存在。 fopen()方法:
[u]复制代码[/u] 代码如下:
<?php     $url = 'http://www.test.com/images/test.jpg';     if( @fopen( $url, 'r' ) )     {         echo 'File Exits';     }     else     {         echo 'File Do Not Exits';     }     ?>
CURL方法:
[u]复制代码[/u] 代码如下:
<?php     $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 '文件不存在';     }     ?>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部