2

I have an issue with codeigniter file upload library. I am trying to upload multiple files (7 images), i renamed them and after which uploaded to my server file system. But i cannot get the new name to save in my database.

Here is my Controller

if (isset($_POST['carform']))
{
                $dir = './uploads/cars';
                $config['upload_path'] = $dir;
                $config['allowed_types'] = 'jpg|jpeg|png';
                $config['max_size'] = '2048';
                $config['max_width']  = '1024';
                $config['max_height']  = '768';
                $config['remove_spaces'] = 'TRUE';
                $uid = $this->tank_auth->get_user_id();
                $config['file_name'] = time().$uid;
                $this->load->library('upload', $config);

            foreach($_FILES as $field => $file)
            {

                if($file['error'] == 0)
                {

                    // So lets upload
                    if ($this->upload->do_upload($field))
                    {


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

                        $this->cars_model->set_car($data);//end foreach loop.....
                        $id = $this->db->insert_id();
                redirect('/cars/details/'.$id.'');

                    }else
                    {
                        $errors = $this->upload->display_errors();
                        echo($errors);
                    }
                }

            }


        }//end if  statement ...

2 Answers 2

1

You do have a helper function within Codeigniter File Uploading Class: $this->upload->data(). In order to get the filename do this:

$my_data=$this->upload->data();
$file_name=$my_data['filename'];

check the manual here

edit: to insert data into database assuming $filename is a string you need first explode it into an array

$filename="14010989464.jpg 140109894641.jpg 140109894642.jpg 140109894643.jpg 140109894644.jpg 140109894645.jpg 140109894646.jpg";
$fn=explode(' ',$filename);

then you can insert the data (imagename) into the column img of your table test like this:

foreach ($fn as $key=>$val){
    $data['img']=$fn[$key];
    $this->db->insert('test', $data);
}
Sign up to request clarification or add additional context in comments.

1 Comment

In my case am uploading multiple images(7) of them and when i do print_r($filename) i get this result: 14010989464.jpg 140109894641.jpg 140109894642.jpg 140109894643.jpg 140109894644.jpg 140109894645.jpg 140109894646.jpg . My question now is How do i get the individual filename to save in my db.
0

can use for

ex :

$this->load->library('upload', $config);
for($i=1;$i<=5;$i++) //5 = total image
{
if (!$this->upload->do_upload('userfile'.$i)) 
{
    $data['error'] = array('error' => $this->upload->display_errors());

}
else
{
    $upload_data = $this->upload->data();
    $data[$i] = $upload_data['file_name'];
}
}
    $data_x = array(

                'image1' =>  $data['1'],
                'image2' => $data['2'],
                'image3' => $data['3'],
                'image4' => $data['4'],
                'image5' => $data['5'],
    );

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.