3.2文件上传中的对图像文件进行严格检测

浏览:659 发布日期:2018/03/14 分类:求助交流 关键字: 文件上传 图像文件 严格检测 gif bits
在核心上传类(/thinkphp/ThinkPHP/Library/Think/Upload.class.php)中有这么一段代码:
/* 对图像文件进行严格检测 */
$ext = strtolower($file['ext']);
if(in_array($ext, array('gif','jpg','jpeg','bmp','png','swf'))) {
$imginfo = getimagesize($file['tmp_name']);
if(empty($imginfo) || ($ext == 'gif' && empty($imginfo['bits']))){
$this->error = '非法图像文件!';
continue;
}
}
其中检查gif的bits这一句,php.net里说:“bits 是每种颜色的位数。自 PHP 4.3.0 起,bits 和 channels 对于其它图像类型也存在。但是这些值可能会把人搞糊涂。例如,GIF 总是对每个像素使用 3 个 channel,但是对于动画 GIF 来说每个像素的位数无法通过全局颜色表计算出来。 ”
而我在上传一张gif图片时确实没获取到bits参数(其它gif图是能取到的),结合上面所说,gif是不是可能获取不到bits参数。所以我觉得“$ext == 'gif' && empty($imginfo['bits'])”这一句是不是应该换成“$ext != 'gif' && empty($imginfo['bits'])”,表示gif图片不一定要有bits参数。
最佳答案
评论( 相关
后面还有条评论,点击查看>>