phpcodeignitercodeigniter-form-helper

CodeIgniter doesn't load upload library


I'm having a problem with loading a CodeIgniter library,

I've already built three (3) websites with CodeIgniter, so I consider myself familiar with this framework.

The problem is only with the upload lib. I've tried with multiple functions and it still doesn't work.

I've even tried with the CodeIgniter example

In google I can't find any answers, does anyone have an idea what it could be?

class Admin extends CI_Controller {

public function __construct(){
    parent::__construct();
    $this->load->library('session');
    $this->load->library('v');
    $this->load->model('admin_model');
}

public function upload_a_thing($set = null){
    $this->load->helper(array('form', 'url'));
    if(!$set){
        $this->load->view('admin/upload_a_thing');
    }else{
        $this->load->library('Upload');
        if (!$this->upload->do_upload('userfile')){
            echo $this->upload->display_errors();
        } else {

            $file = $this->upload->data();
            //          $product = $this->admin_model->get_products($id);
            $newFilePath = $config['upload_path'].'try.jpg';
            $file['file_name'] = str_replace(" ","_",$file['file_name']);
            rename($config['upload_path'].$file['file_name'], $newFilePath);
        }   
    }
}   

CodeIgniter Error

 Undefined property: Admin::$upload

PHP error

Fatal error: Call to a member function do_upload() on a non-object 

Edited for Spary

        $config['upload_path'] = './media/imgs/products/';
        $this->load->library('upload',$config);
        if (!$this->upload->do_upload('userfile')){
            echo $this->upload->display_errors();
        }

Solution

  • If your form looks like this:

    <input type="file" class="input" name="logo"  />
    

    then call do_upload() like this:

     do_upload('logo');
    

    If it looks like this:

     <input type="file" class="input" name="userfile" />
    

    then call it like this:

     do_upload();