[CodeIgniter]解决上传文件类型提示不允许问题: The filetype you are attempting to upload is not allowed.

之前用CI(CodeIgniter)写过一个管理系统,当时需要的功能是导入Excel表格实现批量处理。而现在就出现一个问题:上传Excel文件的时候,总是提示:The filetype you are attempting to upload is not allowed. 确确实实上传的是excel文件… 既然提示文件类型不允许,那我就查看下上传文件的文件类型: echo $_FILES[‘userfile’][‘type’]; 显示结果为:application/kset 还真的不是excel格式,原来是wps软件对应的表格格式。 WPS包括三种主要格式的文件.wps/.et/.dps 这三种格式文件的MIME类型分别是 application/kswps application/kset application/ksdps 于是就添加对应的一个格式即可。 找到CI框架的应用程序目录下的配置目录->mimes.php文件   在该文件中找到.xls的配置项 ‘xls’ => array(‘application/excel’, ‘application/vnd.ms-excel’), 然后再添加WPS表格文件格式 ‘xls’ => array(‘application/excel’, ‘application/vnd.ms-excel’, ‘application/msexcel’,’application/kset’), 保存,刷新重新上传成功!

【CI】框架简介

CI工作流程:         所有的入口都从根目录下的index.php进入,确定应用所在目录后,加载 codeigniter/CodeIgniter.php 文件,该文件会顺序加载以下文件执行整个流程。 index.php:检测文件路径,加载codeigniter.php文件 codeigniter.php: 加载 Common/constants….文件。获取文件模式、设置计时器、实例化类(错误类、扩展类、钩子类、系统扩展、配置类、编码类、路由类、过程类、输出类、安全类、语言类、控制器)、加载请求方法、渲染输出view。 CodeIgniter的一个类会保存为一个php文件,类名与文件名同名,它的核心应用类会在类名前加"CI_"。 system/core/common.php:包含检测php版本、文件权限、加载核心类、获取配置参数、加载异常/错误类、获取http请求状态等公共函数 application/config/constants.php:设置文件权限常量、应用程序宏定义文件 system/core/Benchmark.php:用来记录执行时间 system/core/Hooks.php:检测是否有钩子对象调用 system/core/Config.php:为管理配置文件提供方法,检测application/config/config.php参数 application/config/config.php:配置全局参数 system/core/URI.php:解析url参数 system/core/Router.php:检测路由配置,解析 HTTP 请求,以确定谁来处理 system/core/Output.php:检查是否有缓存文件,如果存在则直接输出内容。 system/core/Input.php:过滤 HTTP 请求和任何用户提交的数据 system/core/Long.php:初始化提示语言变量 system/core/conctroller.php:控制输出类   记录错误日志: 默认程序不记录错误日志,如果有需要的话可以设置: 1、在application/config/config.php中设置$config[‘log_threshold’] = 1/2/3/4,如果为0表示不输出错误日志,具体可查看里面的介绍; 2、在需要写入错误的页面调用全局函数log_message('级别','消息'),级别有三个,一是error,即php运行错误,二是debug,系统调试,CI本身在很多页面也加了自己的系统debug,三是info,介绍运行中的一些消息,消息内容自己写; 3、默认情况下错误日志存放在application/logs/log-[time].php中,它按日期存放文件,比如:log-2011-6-26表示存入今天的日志内容,一般情况下为了隐藏日志内容须将这个地址挪位,可以在$config[‘log_path’]中设置路径,按要求最好是完整路径信息。 设置自己的全局变量/配置: 有时需要定义自己的全过程变量以供在其它地方使用,如自定义的session等,在CI中这项工作也很轻松。 1、在application/config/中创建自己的config文件,注意存放文件位置。比如建立一个自己的配置文件mysetting.php,内容,$config[‘try’] = 'this is my trying'; 2、在需要调用自定义全局变量的地方使用$this->config->load('settingfile')函数,比如: $this->config->load('mysetting'); 如果有需要也可以通过application/config/autoload.php设置为自动加载。 3、接下来在同一页面中使用$this->config->item('varname')函数,比如:$this->config->item('try');会输出:this is my trying; 上面可以看出,CI中函数调用为:$this->filename的形式,也可以看出CI把整个系统看成一个大的类,然后通过加载、继承等方式获取相应方法。 更多自定义变量参考:http://codeigniter.org.cn/user_guide/libraries/config.html 隐藏index.php与加载外部文件:    … Continue reading “【CI】框架简介”