关于Codeigniter上传文件类型的问题

2958
4
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

也是我发现的其中一个不存在的类型,所以我加了进去,问题解决。

有疑问的同学,请给我留言。

转自:http://www.158code.com/article/59

昵称
邮箱
网址
igi 3的头像 2020-11-13 01:22

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.

quericy的头像 2015-07-11 10:30

CI的MIME类型判断貌似一直都有点问题,有些来自网络的office文件类型会被判定为cdf v2 document,除非打开编辑取消保护模式。。搞得我只能加"cdf v2 document, corrupt: can't expand summary_info"到mimes的数组里。感觉这种白名单的方式实在不好用

mokeyjay的头像 2015-07-12 19:45
mokeyjay 博主

我反倒觉得直接读后缀名.xxx更方便,也许CI这么做是考虑到某些安全问题?

quericy的头像 2015-07-12 22:35

是的。。