php 检测文件是否存在的几种方式
来源:互联网 发布:数据分析师考试网 编辑:程序博客网 时间:2024/04/29 20:56
网页中一些图片获取失败,会显示一个空的图片,影响美观。
服务器获取图片地址时,可以先判断图片地址是否有效,如果找不到图片,则返回默认图片地址,判断文件是否存在有多种方式:
- 图片与项目在同一服务器中,php中 file_exsits 函数可以检查文件是否存在;
- 使用文件服务器时, 可使用curl、fopen、fsockopen、file_get_contents等函数进行判断,但当文件不存在或网络不稳定时,非常耗时,如果图片数量过大更会拖慢网页运行速度。
服务器无法处理的图片,可以在前端作处理:
- 使用jq为img添加onerror事件,在加载不成功时,将图片源替换为默认图片;需要注意的是,如果再次替换不成功,可能会陷入死循环,要指定替换次数或替换后解绑onerror事件。
file_exsits:
//仅限本地文件
if(!file_exists(“text.jpg”))
curl:
$ch= curl_init ();
curl_setopt($ch, CURLOPT_URL,'http://my.com/o/test.jpg');
curl_setopt($ch, CURLOPT_TIMEOUT, 1);//设置超时时间
curl_setopt($ch,CURLOPT_NOBODY,1); // 不下载
curl_exec($ch); $httpCode =curl_getinfo($ch,CURLINFO_HTTP_CODE);
if($httpCode==404){
}
fopen:
// 只有在php 的配置开启了“allow_url_fopen= On”,即允许远端访问,才可用,php默认开启
if(@fopen('http://my.com/o/test.jpg','r’)){
}
file_get_contents:
//只是将内容抓取过来,如果有404页面,会将整个html都抓取,无法http判断状态码。
$s = @file_get_contents($url);
if(strlen($s) == 0){
}
fsockopen:
//“allow_url_fopen= Off”时也可以使用
$parseurl=parse_url('http://127.0.0.1/test.jpg');
$host=$parseurl['host'];
$path=$parseurl['path'];
$fp=fsockopen($host,80,$errno, $errstr, 10);
if(!$fp){
$path=$parseurl['path'];
$fp=fsockopen($host,80,
if(!$fp){
}
fputs($fp,"GET {$path} HTTP/1.1 \r\nhost:{$host}\r\n\r\n");
if(preg_match('/HTTP\/1.1 200/',fgets($fp,1024))){
}else{
}
js:
//将为加载成功的图片替换为默认图片
$('img').each(function(){
});
0 0
- php 检测文件是否存在的几种方式
- PHP判断远程文件是否存在的几种方法
- PHP判断远程文件是否存在的几种方法
- 原来php的dirname不检测文件是否存在
- PHP检测远端文件是否存在
- 检测文件是否存在
- 检测文件是否存在
- 检测文件是否存在
- 检测文件是否存在
- Asp检测文件是否存在的函数
- 检测一个文件是否存在的方法
- VC检测文件存在的几种方法
- VC 判断文件是否存在的几种方法
- 判断文件是否存在的几种方法
- VC 判断文件是否存在的几种方法
- VC 判断文件是否存在的几种方法
- php检测函数是否存在
- PHP检测函数是否存在
- MNIST_whole_net_XXX
- Ucenter实现多个网站同步登录
- BZOJ1009 GT考试 (DP 矩阵乘法优化)
- Discuz! X3在手机版中播放诸如优酷之类视频的方法
- android中打开串口打印
- php 检测文件是否存在的几种方式
- 摘录 nodejs get 与 post 区别应用
- 2. SpringMVC常用注解说明
- 复习一下src与background的区别
- Android Studio com.android.dex.DexException: Multiple dex files define/xxx/xxx/xxx
- 2 判断
- 两个栈实现队列
- input type=date 的兼容性等问题
- ExtJS使用Form提交数据