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

Codeigniter文件上传时Assets文件夹文件名加密但数据库存储文件名未变更问题

问题根因
  • 你在上传配置中开启了$config['encrypt_name'] = TRUE,CodeIgniter的上传类会自动生成随机加密的文件名存入目标目录,不会保留原始文件名。
  • 你当前代码上传成功后直接从$_FILES['post_image']['name']取值,拿到的是用户上传的原始文件名,并非框架处理后的加密文件名,因此出现数据库存储和实际存储文件名不一致的问题。
修复方法

修改上传成功分支的取值逻辑,调用CodeIgniter上传类的data()方法获取实际存储的加密文件名,对应修改代码如下:

if (!$this->upload->do_upload('post_image')) {
    echo $this->upload->display_errors();
} else {
    // 调用上传类的data方法获取处理后的文件全量信息
    $uploadInfo = $this->upload->data();
    // 取加密后的文件名存入变量
    $post_image = $uploadInfo['file_name'];
}
可选优化建议
  • 你已经在加载上传库的时候传入了配置参数,无需额外再调用$this->upload->initialize($config)重复初始化,冗余代码可以删除。
  • 模型层尽量不要直接输出错误内容,建议把错误信息返回给控制器层做统一处理,避免打断后续逻辑执行。

内容的提问来源于stack exchange,提问作者shreerangam vinay kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:09:02