0

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?

Michael Irigoyen
  • 22,513
  • 17
  • 89
  • 131
zamalek 100
  • 55
  • 2
  • 8

2 Answers2

1

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;
        }
    }
Mojbala
  • 115
  • 1
  • 5
0

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')) {

  • First part yes, missing `enctype` attribute could be the issue, but no need to change the code, the value for `$field` is correctly being passed as an argument to the function – omma2289 Aug 25 '13 at 06:38