php - 怎么样过滤掉非图片呢?
大家讲道理
大家讲道理 2017-04-11 10:23:16
0
3
677

现在所有文件都会被当做图片来处理 我希望如果只显示图片 不是图片就不处理 包括改过的拓展名的情况 这里好像也没法用getimagesize啊

$dir = "upload/"; if (is_dir($dir)){ if ($dh = opendir($dir)){ while (($file = readdir($dh))!= false){ if(!is_dir($file)) { } } closedir($dh); } }
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all (3)
阿神

肯定不能按扩展名来判断,因为扩展名可以修改的.
不管你过来的是文件还是图片,它的路径都是一个字符串对吧!

$url='./1.jpg';
再用getimagesize 去获取这个$url 如果这个路径是一个有效的图片,就会返回一个数组,里面有图片的类型.下面就直接判断就行了.如果不是,就会返回false 并产生 E_WARNING 级的错误.
只要能返回false 就说明这不是图片,就不处理,你想在这跳转还是return看你自己了.

至于这个E_WARNING错误,PHP有设置可以让它不报级别的错误.不会自行百度.更何况当网站上线后,所有的级别错误都得屏闭.

刚刚查了查PHP手册.你用这个函数去判断它的类型更好也更快!exif_imagetype 函数

而且如果类型不是图片,直接返回false ,而且还不会报错误.实用性更加的强.推荐使用!

    刘奇

    通过判断扩展名或者获取文件的MIME类型来判断,pecl中有一个这个扩展,你可以尝试

    http://php.net/manual/zh/book...

      巴扎黑

      通常根据扩展名判断的话直接截取扩展名,用in_array()判断就行了。
      既然说改过扩展名的情况,那就需要获取文件的信息。因此要获取MIME信息。
      这方面函数很多,可以使用Fileinfo函数获取。然后再判断。

        Latest Downloads
        More>
        Web Effects
        Website Source Code
        Website Materials
        Front End Template
        About us Disclaimer Sitemap
        php.cn:Public welfare online PHP training,Help PHP learners grow quickly!