Php – Codeigniter 4: Uploading files with move_uploaded_file

codeignitercodeigniter-4file uploadPHP

I just started moving CodeIgniter 3 project to CodeIgniter 4.

Everything works fine except file upload.

I would like to keep the user uploaded files in /writable/uploads. Below is the code I use to move the uploaded file to desired location.

            $target_dir = '/writable/uploads/recordings/';
            $target_file = $target_dir . basename($_FILES["gfile"]["name"]);
            $FileType = pathinfo($target_file,PATHINFO_EXTENSION);

            if($FileType != "mp3") {            
             $vmuploadOk = 1;
            }               
            else
             $vmuploadOk = 1;   


            if ($vmuploadOk == 1) {
                $greetfile = $id . "g" . basename($_FILES["gfile"]["name"]);

                $target_filenew = $target_dir . $greetfile;     

                move_uploaded_file($_FILES["gfile"]["tmp_name"], $target_filenew);                 
            }

I assume that it is because CI4 keeps writable folder outside public folder.

Best Answer

You are not using CodeIgniter's built in functions. Everything shown in your code are PHP functions. If you want to leverage built in CI functions, then look through the documentation as linked by @Boominathan Elango.

To get the file from the request:

$file = $this->request->getFile('here_goes_input_name');

As specified here

To move the file using CI function:

$file->move(WRITEPATH.'uploads', $newName);

As specified here

Related Topic