CodeIgniter上传类库的一个Bug

这几天重构博客程序的时候,发现了一个CodeIgniter默认上传类的BUG。很奇怪的是,一直到前些天CI官方最新发布的1.7.2,此BUG仍未修正,特此记录。

症状:只能上传图片后缀的文件,其他类型文件(比如.zip,.tar.gz)无法通过验证,就算你将这些类型添加进了$config['allowed_types']。

涉及到的CodeIgniter版本:1.7.1;1.7.2。

原因:Upload Class中的is_allowed_filetype()方法有逻辑错误。

解决方案

1、如果你不想动CI的系统源码,那么就将除图片类型之外的其他后缀,放到图片类型之前,比如:

$config['allowed_types'] = 'zip|gz|png|gif|jpg';(正确)

$config['allowed_types'] = 'png|gif|jpg|zip|gz';(错误)

请注意以上暗红色部分的位置。

2、对Upload.php开刀并修改is_allowed_filetype()的判断逻辑,解决办法在这个帖子里面:

http://codeigniter.com/forums/viewthread/113029/

这个BUG在BUG Tracker存在了那么久,开发者竟然不采纳的……What can I say?

1 个评论 »
  1. 华晨 华晨
    September 16, 2009, 9:15 am

    那你就换个框架用嘛,zend的就不错嘛

回应此文

你也可以选择引用此文章.