Get filename as array after upload in codeigniter

2019-09-09 06:44发布

问题:

I'm facing an issue when returning the filename after uploading the files. When I press the submit button its uploading the image to folder but I'm not getting the filename.

This is the code:

CONTROLLER:

public function add()
    {
        $title = $this->input->post('title');
        $files = $this->do_upload();
        //print_r($files);
        $this->user->in($title,$files);
    }


public function do_upload()
    {       

        $name_array = array();
        $files = $_FILES;
        $cpt = count($_FILES['userfile']['name']);
        for($i=0; $i<=$cpt-1; $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());
           $data = $this->upload->do_upload();
           $name_array[] = $data['file_name'];
        }

        $names = implode(',', $name_array);
        return $names;
     }

private function set_upload_options()
     {   
        $config = array();
        $config['upload_path'] = './portfolio/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size']      = '0';
        $config['overwrite']     = FALSE;

        return $config;
     }  

MODEL:

public function in($title,$file)
     {
        foreach ($title as $key => $n) {

                        $insert[] = array(
                                'title' => $n,
                                'file' => $file[$key]
                                );
            }
            $this->db->insert_batch('title',$insert);
     }  

VIEW:

<?php echo form_open_multipart('location/add'); ?>
<div>
  <input type="text" name="title[]"><br>
  <input type="file" name="userfile[]">
</div>
<br><br>
<div>
  <input type="text" name="title[]"><br>
  <input type="file" name="userfile[]">
</div><br>
<input type="submit" name="" value="enter">
<?php echo form_close(); ?>  

And if I try to print the $files as print_r($files); its simply showing a , only.

Ref link: Multiple files upload (Array) with CodeIgniter 2.0

回答1:

$this->upload->do_upload() returns only true or false. You have to get data with $name_array[] = $this->upload->data('file_name');