CodeIgniter3上传合法JPEG文件提示文件类型不允许求助
解决CodeIgniter3上传JPEG图片提示“文件类型不允许”的问题
以下是可能的原因及对应解决办法:
1. 确认修改的是正确的mimes.php文件
CodeIgniter3中,自定义配置需修改application/config/mimes.php,而非system/config/mimes.php(系统目录文件不应修改)。检查你编辑的是否是application目录下的配置文件,确保jpeg和jpg的MIME配置正确:
'jpeg' => array('image/jpeg', 'image/pjpeg'), 'jpg' => array('image/jpeg', 'image/pjpeg'),
2. 禁用MIME自动检测(排查用)
CI3上传类默认会通过finfo或getimagesize检测文件真实MIME类型,若服务器环境的检测结果与浏览器传递的image/jpeg不一致,会导致报错。可临时添加配置禁用检测,验证是否为此问题:
$config['detect_mime'] = FALSE;
注意:此方法会降低上传安全性,仅用于排查,确认问题后需寻找更安全的解决方案(如开启finfo扩展或调整检测逻辑)。
3. 查看CI实际检测到的文件类型
在报错位置添加调试代码,查看CI识别的文件类型和具体错误信息:
if (!$this->upload->do_upload('image_' . $row)) { var_dump($this->upload->file_type); // 查看CI检测到的MIME类型 var_dump($this->upload->error_msg); // 查看详细错误 $error[] = $this->upload->display_errors(); print_r($this->upload->display_errors()); die(); break; }
根据输出结果,可精准定位问题(比如CI检测到的MIME不在mimes.php配置中)。
4. 检查文件名配置是否干扰
你设置了$config['file_name'] = strtolower($patient->get_name());,若get_name()返回的字符串包含特殊字符或为空,可能间接影响上传逻辑。可临时注释此配置,测试是否能正常上传。
5. 确认服务器环境配置
- 检查php.ini中
file_uploads = On,确保文件上传功能开启; - 确认
upload_max_filesize和post_max_size大于你的文件大小(140KB,此条件通常满足); - 若服务器未开启
finfo扩展,CI可能使用旧的MIME检测方法,导致误判。可开启finfo扩展或更新服务器环境。
内容的提问来源于stack exchange,提问作者user6496921
相关产品推荐
相关产品推荐

