• PHP如何判断远程图片文件是否存在


     1 <?php
     2 $url = 'http://www.nowamagic.net/images/test.jpg';
     3 
     4 if( @fopen( $url, 'r' ) ) 
     5 { 
     6     echo 'File Exits';
     7 } 
     8 else 
     9 {
    10     echo 'File Do Not Exits';
    11 }
    12 ?>

    fopen() 函数打开文件或者 URL。如果打开失败,函数会返回 FALSE。

    语法:fopen(filename,mode,include_path,context)

    参数描述
    filename 必需。规定要打开的文件或 URL。
    mode 必需。规定要求到该文件/流的访问类型。可能的值见下表。
    include_path 可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。
    context 可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

    mode 参数的可能的值:

    mode说明
    "r" 只读方式打开,将文件指针指向文件头。
    "r+" 读写方式打开,将文件指针指向文件头。
    "w" 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    "w+" 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    "a" 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    "a+" 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    "x" 创 建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
    "x+" 创建并以读写方式打开, 将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

    fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。

    如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。

    如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。

    CURL 方法

    CURL是个很好用的类库,下面看下如何用它来判断。

     1 <?php
     2 $url2 = 'http://www.nowamagic.net/test.jpg';
     3 
     4 $ch = curl_init(); 
     5 $timeout = 10; 
     6 curl_setopt ($ch, CURLOPT_URL, $url2); 
     7 curl_setopt($ch, CURLOPT_HEADER, 1); 
     8 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
     9 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    10 
    11 $contents = curl_exec($ch);
    12 //echo $contents;
    13 if (preg_match("/404/", $contents)){
    14     echo '文件不存在';
    15 }
    16 ?>

    curl_exec()执行完之后如果文件不存在,会返回如下信息:

    1 HTTP/1.1 404 Not Found
    2 Date: Tue, 14 Feb 2012 05:08:34 GMT
    3 Server: Apache
    4 Accept-Ranges: bytes
    5 Content-Length: 354
    6 Content-Type: text/html
  • 相关阅读:
    c#之字符串,列表,接口,队列,栈,多态
    c#之函数
    KMP算法
    字符串Hash
    洛谷P1807 最长路_NOI导刊2010提高(07)
    洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom
    洛谷P2071 座位安排
    二分图最大匹配,匈牙利算法
    差分约束系统
    搜索
  • 原文地址:https://www.cnblogs.com/jami918/p/3180520.html
Copyright © 2020-2023  润新知