PHP如何判断远程图片文件是否存在
2014-10-09 15:45
731 查看
fopen()方法
最简单的方法就是用fopen(),看看文件能否打开,能打就文件当然就存在。<?php $url = 'http://www.nowamagic.net/images/test.jpg'; if( @fopen( $url, 'r' ) ) { echo 'File Exits'; } else { echo 'File Do Not Exits'; } ?>
fopen() 函数打开文件或者 URL。如果打开失败,函数会返回 FALSE。
语法:fopen(filename,mode,include_path,context)
参数 | 描述 |
---|---|
filename | 必需。规定要打开的文件或 URL。 |
mode | 必需。规定要求到该文件/流的访问类型。可能的值见下表。 |
include_path | 可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。 |
context | 可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。 |
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 以及以后的版本所支持,仅能用于本地文件。 |
如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。
如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败。
一个fopen的用法
<?php $file = fopen("test.txt","r"); $file = fopen("/home/test/test.txt","r"); $file = fopen("/home/test/test.gif","wb"); $file = fopen("http://www.example.com/","r"); $file = fopen("ftp://user:password@example.com/test.txt","w"); ?>
但是如果图片资源所在服务器挂掉了,这个函数会一直等待,所以我们需要一个备用方案。
CURL 方法
CURL是个很好用的类库,下面看下如何用它来判断。<?php $url2 = 'http://www.nowamagic.net/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 '文件不存在'; } ?>
curl_exec()执行完之后如果文件不存在,会返回如下信息:
HTTP/1.1 404 Not Found Date: Tue, 14 Feb 2012 05:08:34 GMT Server: Apache Accept-Ranges: bytes Content-Length: 354 Content-Type: text/html
用正则看看是否有404,有的话文件就不存在。
相关文章推荐
- PHP如何判断远程图片文件是否存在
- PHP如何判断远程图片文件是否存在
- PHP如何判断远程图片文件是否存在
- PHP如何判断远程图片文件是否存在
- PHP如何判断远程图片文件是否存在
- PHP如何判断远程图片文件是否存在
- PHP如何判断远程图片文件是否存在
- PHP如何判断远程图片文件是否存在
- PHP判断远程图片或文件或url是否存在-180
- PHP判断远程图片或文件是否存在的实现代码
- PHP如何判断远程文件是否存在
- PHP 判断远程图片文件是否存在
- PHP判断远程图片或文件是否存在
- PHP 远程图片:如何判断远程图片是否存在
- PHP判断远程图片或文件或url是否存在
- php如何判断文件是否存在,包括本地和远程文件
- php如何判断文件是否存在,包括本地和远程文件
- php判断远程图片或文件是否存在
- PHP判断远程图片或文件是否存在
- PHP判断远程图片或文件是否存在的实现代码