CodeIgniter中的上载图像不起作用


Upload image in CodeIgniter not working

我有上传图像的视图,我有输入类型的文件,比如:

<input type="file" name="ev_pic" size="20" />

我的控制器像:

if(strlen($_FILES['ev_pic']['name']) > 0) 
        {
        $pic = $this->do_upload('ev_pic');
        }

上传方式:

public function do_upload($field) {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '1000';
        $config['max_width'] = '1024';
        $config['max_height'] = '768';
        $this->load->library('upload', $config);
        if (!$this->upload->do_upload($field)) {
            $error = array('error' => $this->upload->display_errors());
            return $error;
        } else {
            /*$data = array('upload_data' => $this->upload->data());
            return $data;*/
            $updata =$this->upload->data();
            $data = $updata['raw_name'].$updata['file_ext'];
            return $data;
        }
    }

在调试中显示此错误:

Severity: Notice
Message: Undefined index: ev_pic
Filename: administrator/events.php
Line Number: 68

Error Number: 1054
Unknown column 'Array' in 'field list'
UPDATE `events` SET `ev_id` = 0, `ev_text` = 0, `ev_pic` = Array
Filename: D:'AppServ'www'd5n'rashaqa2'system'database'DB_driver.php
Line Number: 330

所以我会用ev_pic命名文件,问题在哪里?

在控制器的__construct函数中加载上传库,如下所示:

public function __construct(){
  parent::__construct();
  $this->load->library('upload');
}

然后将您的功能更改为:

public function do_upload($field) {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '1000';
        $config['max_width'] = '1024';
        $config['max_height'] = '768';
        /////////// change this //// //////
        $this->upload->initialize($config);
        ///////////////////////////////////
        if (!$this->upload->do_upload($field)) {
            $error = array('error' => $this->upload->display_errors());
            return $error;
        } else {
            /*$data = array('upload_data' => $this->upload->data());
            return $data;*/
            $updata =$this->upload->data();
            $data = $updata['raw_name'].$updata['file_ext'];
            return $data;
        }
    }

请检查您的表单

form enctype="多部分/表单数据"是否可用

并更改这条线路

if(!$this->upload->do_upload($field)