Ibanez1408
Ibanez1408

Reputation: 5058

Uploading file in Codeigniter

I am able to save to the folder but couldn't get the documedocument_foldername and document_filename to be saved into my database. I get an error of -

"A PHP Error was encountered

Severity: Notice

Message: Undefined variable: form_input_Data"

Below are my codes

VIEW:

<?php //echo base_url('index.php/c_uploader/do_upload'); ?>
<!--?php echo $error;?-->
<!--?php echo form_open_multipart( base_url('index.php/c_uploader/do_upload') );?-->

<form id="form_input_Data", method="post" action="c_upload/do_upload">

    Select One or multiple Files
    <input multiple="multiple" name="userfile[]" size="20" type="file" />Allowed files: gif, png, png, pdf
    <input type="submit" value="upload" />
</form> 

CONTROLLER:

    <?php 

Class C_Upload extends CI_Controller{

    public function __construct(){
        parent::__construct();
        $this->load->helper('URL','DATE','URI', 'FORM');
        $this->load->library('form_validation');
        $this->load->library('upload');
        $this->load->model('m_upload');
    }

    public function index(){
        $this->load->view('pakyaw/v_uploader');
    }

    public function do_upload(){
        $this->load->library('upload');

        $files = $_FILES;
        $cpt = count($_FILES['userfile']['name']);
        for($i=0; $i<$cpt; $i++){
            $_FILES['userfile']['name']     = $files['userfile']['name'][$i];
            $_FILES['userfile']['type']     = $files['userfile']['type'][$i];
            $_FILES['userfile']['tmp_name'] = $files['userfile']['tmp_name'][$i];
            $_FILES['userfile']['error']    = $files['userfile']['error'][$i];
            $_FILES['userfile']['size']     = $files['userfile']['size'][$i];    

            $this->upload->initialize($this->set_upload_options());
            $this->upload->do_upload();

            $upload_data=$this->upload->data();
                $file_name  =   $upload_data['file_name'];
                $file_type  =   $upload_data['file_type'];
                $file_size  =   $upload_data['file_size'];

            // Output control
                $data['getfiledata_file_name'] = $file_name;
                $data['getfiledata_file_type'] = $file_type;
                $data['getfiledata_file_size'] = $file_size;
            // Insert Data for current file
                $this->m_upload->insertNotices($form_input_Data);

            //Create a view containing just the text "Uploaded successfully"
            $this->load->view('upload_success', $data);

        } // end of for loop
    }

    private function set_upload_options(){   
        //  upload an image options
        $config = array();
        $config['upload_path'] = 'att_uploads/';
        $config['allowed_types'] = 'gif|jpg|png|pdf';
        $config['max_size']      = '0';
        $config['overwrite']     = FALSE;


        return $config;
    }
}

 ?>

MODEL:

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

class M_Upload extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    function M_notice (){
        parent::Model();
    }

    function insertNotices($arrayOfNoticeFiles){
        $tableName  = "delwater_hradmindb.t_notices";
        $inputArray = $arrayOfNoticeFiles;

        $data = array(
            'document_foldername'=>$inputArray["document_foldername"],
            'document_filename'=>$inputArray["document_filename"]
        );

        $this->db->insert($tableName, $data); 
    }

}

Please tell me what I am doing wrong here. I need your help. Thank you.

Upvotes: 1

Views: 1039

Answers (3)

Hikmat Sijapati
Hikmat Sijapati

Reputation: 6994

Please remove following errors first..Hope then it will works..

In view: use enctype="multipart/form-data" in form.

<form id="form_input_Data" method="post" action="c_upload/do_upload" enctype="multipart/form-data">

In Controller

remove it

echo $_FILES['userfile']; die();

And configuration of upload library...

Replace

$config['upload_path'] = 'att_uploads';

By

$config['upload_path'] = 'att_uploads/';

Upvotes: 3

secondsight
secondsight

Reputation: 115

please use

enctype="multipart/form-data"

in your form.

<form id="form_input_Data", method="post" action="c_upload/do_upload"enctype="multipart/form-data">

Upvotes: 1

dhruv jadia
dhruv jadia

Reputation: 1680

change from

<form id="form_input_Data", method="post" action="c_upload/do_upload">

to

<form id="form_input_Data" method="post" action="c_upload/do_upload" enctype="multipart/form-data">

Upvotes: 0

Related Questions