• PHP如何判断上传的图片格式
  • 发布于 2个月前
  • 273 热度
    0 评论
最近遇到一个问题:有用户反馈说,在我们的App上无法发布对应的图片内容!昨天明明可以发的,但是今天却不行了!也不知道是啥原因。。。。
打开代码,找到对应的方法处,看了下相关逻辑,发现逻辑没啥问题。然后也看了下对应时间段的线上服务,也没有报错。后来看了下线上日志,发现了用户发布失败时,输出的图片类型值是18,在成功发布的情况下,图片类型值是3。3和18分别是啥意呢?代表哪种图片格式呢?研究如下:

服务实现是用PHP来做的,最核心的一个方法是:getimagesize 函数,其定义如下:
array getimagesize ( string $filename [, array &$imageinfo ] )
作用是:测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。一般用法如下:
<?php
list($width, $height, $type, $attr) = getimagesize("堆代码joe
-logo.png");
echo "宽度为:" . $width;
echo "高度为:" . $height;
echo "类型为:" . $type;
echo "属性:" . $attr;
?>
返回的结果是:
宽度为:290
高度为:69
类型为:3
属性:width="290" height="69"
需要说明的是,这个方法返回结果中,图片类型是数字,而不是对应的文件后缀名!!(这个一定要注意) 图片类型对应的数字如下:

这样就可以根据类型值来判断当前用户上传图片到底是哪种类型了!公共校验方法里面只允许类型值为1,,2,3的图片上传通过,除此之外全部屏蔽了!把这个方法修改了下兼容性,问题就解决好了~
用户评论