You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:25:23