现在所有文件都会被当做图片来处理 我希望如果只显示图片 不是图片就不处理 包括改过的拓展名的情况 这里好像也没法用getimagesize啊
$dir = "upload/";
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh))!= false){
if(!is_dir($file)) {
}
}
closedir($dh);
}
}
阿神2017-04-11 10:25:16
肯定不能按扩展名来判断,因为扩展名可以修改的.
不管你过来的是文件还是图片,它的路径都是一个字符串对吧!
$url='./1.jpg';
再用getimagesize 去获取这个$url 如果这个路径是一个有效的图片,就会返回一个数组,里面有图片的类型.下面就直接判断就行了.如果不是,就会返回false 并产生 E_WARNING 级的错误.
只要能返回false 就说明这不是图片,就不处理,你想在这跳转还是return看你自己了.
至于这个E_WARNING错误,PHP有设置可以让它不报级别的错误.不会自行百度.更何况当网站上线后,所有的级别错误都得屏闭.
刚刚查了查PHP手册.你用这个函数去判断它的类型更好也更快! exif_imagetype 函数
而且如果类型不是图片,直接返回false ,而且还不会报错误.实用性更加的强.推荐使用!
怪我咯2017-04-11 10:25:16
通过判断扩展名或者获取文件的MIME类型来判断,pecl中有一个这个扩展,你可以尝试
http://php.net/manual/zh/book...
巴扎黑2017-04-11 10:25:16
通常根据扩展名判断的话直接截取扩展名,用in_array()判断就行了。
既然说改过扩展名的情况,那就需要获取文件的信息。因此要获取MIME
信息。
这方面函数很多,可以使用Fileinfo
函数获取。然后再判断。