Codeigniter上传同一类型文件时火狐正常,然而其他浏览器不行,打印了一下错误:The filetype you are attempting to upload is not allowed(文件类型不允许).明明设置过此类型的文件了啊,经过搜索资料有人说和文件类型顺序有关(把图片类型放在前面),像这样:$config["allowed_types"]='jpg|gif|doc|docx|ppt|pptx|xls|xlsx';我觉得没有道理啊,苦苦查找看到有人说打印一下$_FILES['userfile']['type'],我试了一下,发现了其中奥秘,得出如下结论:
1、 不同的浏览器提供的文件的 MIME 类型不同,上传时打印$_FILES['userfile']['type']时,不同的浏览器结果可能会不同,不同时期的浏览器结果也可能不同。去年开发的项目今年上传文件就出现了问题。由于codeigniter是国外开发的,在配置文件application/config/mimes.php中没有国内浏览器(如360)上传类型的配置,所以一直出现错误。解决方式如下:
打开application/config/mimes.php,找到某一浏览器不能上传的类型后缀配置,如.doc打印出$_FILES['userfile']['type'],打印结果:application/kswps,此时在.doc配置下添加
原配置:
'doc' => array('application/msword','application/octet-stream'),
修改为:
'doc' => array('application/msword','application/octet-stream','application/kswps'),
然后保存,这样就支持多个浏览器上传了。其他类型文件也是这个过程。
------2014-02-28