0

i did not get image upload and save image path in database My table name is uploadimage and controller name is upload.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Upload extends CI_Controller {


    public function index()
    {
        $this->load->view('view');
    }
    public function do_upload()

    {
        $status="";
        $msg="";
        $filename='product_pic';
        if(empty($_POST['title']))
        {
            $status="error";
            $msg="plz enter title";
        }
        if($status!="error")
        {
            $config['upolad_path']='./file/';
             $config['allowed_types']='gip|jpg|png';
             $config['max_size']=1024*0;
             $config['encrypt_name']=true;
             $this->load->library('upload',$config);
             if(!$this->upload->do_upload($filename))
             {
                 $status='error';
                 $msg=$this->upload->display_errors('','');
             }
             else
             {
                 $this->load->model('file_model');
                 $data=$this->upload->data();
                 $file_id=$this->file_model->insert_file($data['file_name'],$_POST['title']);
                 if($file_id)
                 {
                     redirect('Upload/view');
                 } 
         }
    }
1
  • post your view and model function too. Commented Apr 16, 2016 at 4:36

2 Answers 2

2

Hi you need to have this

view.php

<?= form_open_multipart('upload/do_upload')?>
    <?= form_upload('userfile')?>
<?= form_close()?>

upload.php

function do_upload(){
    $name = $_FILES["file"]["name"];
    $ext = end((explode(".", $name))); # extra () to prevent notice

    $config['upload_path']   = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size']      = 0;

    $this->load->library('upload', $config);

    if( ! $this->upload->do_upload()){
        $error = array('error' => $this->upload->display_errors());

        $this->load->view('upload_form', $error);
    }
    else{
        $upload_data = $this->upload->data();

        #you can choose from
        /*
           Array(
                 [file_name]    => mypic.jpg
                 [file_type]    => image/jpeg
                 [file_path]    => /path/to/your/upload/
                 [full_path]    => /path/to/your/upload/jpg.jpg
                 [raw_name]     => mypic
                 [orig_name]    => mypic.jpg
                 [client_name]  => mypic.jpg
                 [file_ext]     => .jpg
                 [file_size]    => 22.2
                 [is_image]     => 1
                 [image_width]  => 800
                 [image_height] => 600
                 [image_type]   => jpeg
                 [image_size_str] => width="800" height="200"
          )
        */

        $this->model->insert_data($upoad_data['file_name'], $upoad_data['full_path']);

        $data = array('upload_data' => $this->upload->data());

        $this->load->view('upload_success', $data);
    }
}

model.php

function insert_data($name, $path_name){
    $data = array(
                  'name'    => $name,
                  'path'    => $path_name
                 );

    $this->db->insert('table', $data);

    return $this->db->insert_id();
}

With that, you upload your file, then get the data about the upload and insert it in db

Sign up to request clarification or add additional context in comments.

2 Comments

why are we giving max size as 0 ?
Hi, if you check the doc, the config parameter max_size The maximum size (in kilobytes) that the file can be. Set to zero for no limit. Note: Most PHP installations have their own limit, as specified in the php.ini file. Usually 2 MB (or 2048 KB) by default.
0

I use the following snippet for uploading file with multiple file upload field in the form, saving uploaded file to custom directories and finally saving the file location path to the database

$input1 = $this->input->post('input1'); //Input field value
$input2 = $this->input->post('input2'); //Input field value
$photo1 = ''; //File field value
$photo2 = ''; //File field value

$config['upload_path'] = './photo_gallery/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size']    = '';
$this->load->library('upload', $config);

foreach($_FILES as $key=>$file) {
    //$key will be the field name
    $out_dir = "./photo_gallery/$key";
    if(!file_exists($out_dir)) {
        mkdir($out_dir, '0777', true);
    }
    if ( ! $this->upload->do_upload($key))
    {
        $error = array('error' => $this->upload->display_errors());
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());
        $fileName = $data['upload_data']['file_name'];
        $newName = sha1_file("./photo_gallery/$fileName") . "." . pathinfo("./photo_gallery/$fileName", PATHINFO_EXTENSION);
        rename("./photo_gallery/$fileName", "$out_dir/$newName");
        $$key = "$out_dir/$newName";    //This will assign values for $photo1 and $photo2 with new paths
    }              
}

$data_to_insert = array(
    'input1' => $input1,
    'input2' => $input2,
    'photo1' => $photo1, //Updated with new file path
    'photo2' => $photo2, //Updated with new file path
);

//pass variable $data_to_insert in model function that implements following
$success = $this->db->insert('my_table', $data_to_insert);
return $this->db->insert_id();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.