codeigniter文件上传时$config["allowed_types"]设置问题

本文介绍了解决CodeIgniter框架中不同浏览器上传文件时出现的类型不匹配问题的方法。通过调整application/config/mimes.php文件中的MIME类型配置,确保国内外各种浏览器都能正确上传指定类型的文件。

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

$config['base_url'] = Web_Path; $config['index_page'] = SELF; $config['uri_protocol'] = 'REQUEST_URI'; $config['url_suffix'] = ''; $config['language'] = 'english'; $config['charset'] = 'UTF-8'; $config['enable_hooks'] = FALSE; $config['subclass_prefix'] = 'Mc_'; $config['composer_autoload'] = FALSE; $config['permitted_uri_chars'] = ''; $config['allow_get_array'] = TRUE; $config['enable_query_strings'] = FALSE; $config['controller_trigger'] = 'c'; $config['function_trigger'] = 'm'; $config['directory_trigger'] = 'd'; $config['log_threshold'] = 0; $config['log_path'] = FCPATH.'caches/logs/'; $config['log_file_extension'] = ''; $config['log_file_permissions'] = 0644; $config['log_date_format'] = 'Y-m-d H:i:s'; $config['error_views_path'] = FCPATH.'sys/errors/'; $config['cache_path'] = FCPATH.'caches/tpl/'; $config['cache_query_string'] = FALSE; $config['encryption_key'] = Mc_Encryption_Key; $config['sess_driver'] = 'files'; $config['sess_cookie_name'] = Mc_Cookie_Prefix; $config['sess_expiration'] = Mc_Cookie_Ttl; $config['sess_save_path'] = FCPATH.'caches/session'; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 0; $config['sess_regenerate_destroy'] = TRUE; $config['cookie_prefix'] = ''; $config['cookie_domain'] = ''; $config['cookie_path'] = '/'; $config['cookie_secure'] = FALSE; $config['cookie_httponly'] = FALSE; $config['standardize_newlines'] = FALSE; $config['global_xss_filtering'] = FALSE; $config['csrf_protection'] = FALSE; $config['csrf_token_name'] = 'csrf_test_name'; $config['csrf_cookie_name'] = 'csrf_cookie_name'; $config['csrf_expire'] = 7200; $config['csrf_regenerate'] = TRUE; $config['csrf_exclude_uris'] = array(); $config['compress_output'] = FALSE; $config['time_reference'] = 'local'; $config['rewrite_short_tags'] = FALSE; $config['proxy_ips'] = '';
最新发布
08-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值