找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1285|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2487

主题

2487

帖子

7391

积分

论坛元老

Rank: 8Rank: 8

积分
7391
跳转到指定楼层
楼主
发表于 2018-2-14 05:58:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            在做一个图片预览中图的东西,遇到一个问题,就是要判断远程文件是否存在(不是同一台服务器)。
代码如下:
[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/";
    $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 "";
    print_r($headers);
通过http状态码来判断文件是否存在,比如,响应 302,301,404等都为不存在,如果是200,304,等可以视为文件存在。
fopen()方法:
[U]复制代码[/U] 代码如下:
CURL方法:
[U]复制代码[/U] 代码如下:
            
            
您可能感兴趣的文章:
  • 用php获取远程图片并把它保存到本地的代码
  • php 远程图片保存到本地的函数类
  • php下保存远程图片到本地的办法
  • 使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
  • php获取远程图片的两种 CURL方式和sockets方式获取远程图片
  • PHP获取远程图片并保存到本地的方法
  • php利用curl获取远程图片实现方法
  • php获取远程图片并下载保存到本地的方法分析
  • PHP高效获取远程图片尺寸和大小的实现方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端