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

能否在CodeIgniter中将图片名称存入数据库?请求修复存储异常

问题排查与修复方案

我帮你梳理了代码里的关键问题,这就是图片名称无法写入数据库的原因,一步步来修复:

1. 上传配置里的语法&逻辑错误

你初始化上传配置时写了 $config['file_name'] = $data-> 'filename';,这里有两个明显问题:

  • 语法错误:-> 是对象访问操作符,后面不能直接跟空格加字符串,而且此时$data变量还没定义,完全是无效代码。
  • 逻辑错误:如果不需要自定义文件名,这个配置项其实可以直接删掉——毕竟你已经把encrypt_name设为false,上传类会保留原文件名。如果确实要自定义文件名,得用合法的变量或值(比如表单提交的字段)。

2. 获取文件名的方式错误

上传成功后,你试图用$data-> 'filename';获取文件名,这不仅语法错误,而且完全没拿到上传后的真实文件名。正确的做法是从CodeIgniter上传类返回的data()结果里取file_name字段。

修复后的Controller代码

public function upload_file() { 
    $config['allowed_types'] = '*'; 
    // 移除错误的file_name配置,如需自定义文件名请替换为合法逻辑,比如:
    // $config['file_name'] = $this->input->post('custom_filename');
    $config['upload_path'] = './uploads/Ehi'; 
    $config['encrypt_name'] = false; 
    $this->load->library('upload', $config); 

    if ($this->upload->do_upload('image')) { 
        // 先把上传后的文件数据存到变量,方便后续调用
        $upload_data = $this->upload->data();
        // 可以打开下面的注释调试,查看上传返回的所有信息
        // print_r($upload_data);

        $this->load->model('ehi_model'); 
        $data = array( 
            'title' => $this->input->post('title'), 
            'description' => $this->input->post('description'), 
            'username' => $this->input->post('username'), 
            'password' => $this->input->post('password'), 
            'activedays' => $this->input->post('activedays'), 
            'filename' => $upload_data['file_name'] // 从上传数据中获取正确的文件名
        ); 
        $this->ehi_model->upload_file($data); 
        redirect(base_url()."Ehi/index"); 
    } else { 
        // 注意这里是display_errors()(复数),原代码少了个s
        print_r($this->upload->display_errors()); 
    } 
}

额外需要确认的点

  • 确保你的数据库表ehi存在filename字段,建议用VARCHAR(255)类型来存储文件名。
  • 如果上传时还是报错,先打开print_r($upload_data);的注释,确认上传类返回的file_name是否正确。
  • 原代码里的display_error()是拼写错误,应该是display_errors(),这个小错误也会导致你看不到正确的上传报错信息。

内容的提问来源于stack exchange,提问作者Naveen007

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:30:53