1

I always get the error message "You did not select a file to upload" from $this->upload->display_errors());

Here is my script:

$path = './assets/img/objects/';
        $data = [];
        $count = count(array_filter($_FILES['file']['name']));
        for($i=0; $i<$count; $i++){

            if(!empty($_FILES['file']['name'][$i])){    
                 
                $_FILES['file']['name'] = $_FILES['file']['name'][$i];
                $_FILES['file']['type'] = $_FILES['file']['type'][$i];
                $_FILES['file']['tmp_name'] = $_FILES['file']['tmp_name'][$i];
                $_FILES['file']['error'] = $_FILES['file']['error'][$i];
                $_FILES['file']['size'] = $_FILES['file']['size'][$i];
                 
                $config['upload_path'] = $path; 
                $config['allowed_types'] = 'jpg|jpeg|png|gif';
                $config['max_size'] = '5000';
                $config['file_name'] = $_FILES['file']['name'];
                                     
                $this->load->library('upload'); 
                $this->upload->initialize($config); 
                    
                if($this->upload->do_upload('file')){
                    $fileNames[] = $this->upload->file_name;
                    $uploadData = $this->upload->data();
                    $filename = $uploadData['file_name'];
                        
                    $data['totalFiles'][] = $filename;
                            
                }else{
                    $error = array('error' => $this->upload->display_errors());
                    print_r($error);
                }
            }

        }

I am using the multiform option like this:

<input class="btn btn-xl" type="file" name="file[]" multiple="" />

Any idea why it doesn't recognize the file in do_upload?

Bests, Yanick


Solution

I fixed the problem like this:

                    $_FILES['f']['name'] = $_FILES['file']['name'][$i];
                    $_FILES['f']['type'] = $_FILES['file']['type'][$i];
                    $_FILES['f']['tmp_name'] = $_FILES['file']['tmp_name'][$i];
                    $_FILES['f']['error'] = $_FILES['file']['error'][$i];
                    $_FILES['f']['size'] = $_FILES['file']['size'][$i];
                     
                    $config['upload_path'] = $path; 
                    $config['allowed_types'] = 'jpg|jpeg|png|gif';
                    $config['max_size'] = '5000';
                    $config['file_name'] = $_FILES['file']['name'][$i];
                                         
                    $this->load->library('upload', $config);
                        
                    if($this->upload->do_upload('f')){
                        $fileNames[] = $this->upload->file_name;
                        $uploadData = $this->upload->data();
                        $filename = $uploadData['file_name'];
                            
                        $data['totalFiles'][] = $filename;      
                                
                    }else{
                        $error = array('error' => $this->upload->display_errors());
                        $data['error'] = $error;
                    }

Maybe this helps somebody.

Many thanks to the community for the help!

yab86
  • 395
  • 6
  • 24

0 Answers0