关于Codeigniter上传文件类型的问题
2015-07-08
我自己的上传文件类型配置
$config ['allowed_types'] = 'xls|xlsx|xl';
但是在我上传一个已.xls后缀的Excel时一直提示文件类型不正确,可是xls明明在allowed_types里面啊,经过一番查阅,终于发现问题所在~
在上传时我首先 print_r($_FILES ) 结果如下:
Array ( [userfile] => Array ( [name] => Template.xls[type] => application/kset[tmp_name] => C:\Windows\temp\phpACC.tmp [error] => 0 [size] => 7680 ) )
可以看到这个文件type是application/kset这种类型的 之所以报错就是因为这种类型的Excel不在一个文件内,哪个文件呢?
请打开application/config/mimes.php找到xls文件类型的数组
'xls' => array('application/excel', 'application/vnd.ms-excel', 'application/msexcel')
可以看到并没有这个东西 application/kset
现在把它加进去
'xls' => array('application/excel', 'application/vnd.ms-excel', 'application/msexcel','application/octet-stream','application/kset'),
最后:不同的浏览器对文件的解释也不同 最好在不同浏览器打印 $_FIELS 看结果 把对应的type添加进mimes.php的数组即可。application/octet-stream
也是我发现的其中一个不存在的类型,所以我加了进去,问题解决。
有疑问的同学,请给我留言。
My wife and i got quite excited when Edward managed to deal with his investigations from the precious recommendations he had when using the web site.
CI的MIME类型判断貌似一直都有点问题,有些来自网络的office文件类型会被判定为cdf v2 document,除非打开编辑取消保护模式。。搞得我只能加"cdf v2 document, corrupt: can't expand summary_info"到mimes的数组里。感觉这种白名单的方式实在不好用
我反倒觉得直接读后缀名.xxx更方便,也许CI这么做是考虑到某些安全问题?
是的。。