简体   繁体   中英

Upload image in CodeIgniter not working

I have view that upload images and i do input type file like:

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

and my controller like:

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

do upload method:

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;
        }
    }

in debug its show me this error:

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

So i will named file by ev_pic , where is the problem?

load upload library in __construct function of your controller like this:

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

then change your function to below:

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;
        }
    }

please check your form

form enctype="multipart/form-data" is avaliable or not

and change this line

if (!$this->upload->do_upload($field)) { to if (!$this->upload->do_upload('ev_pic')) {

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM