CodeIgniter Forums
Multiple file upload inputs to one controller function - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: CodeIgniter 4 (https://forum.codeigniter.com/forumdisplay.php?fid=28)
+--- Forum: CodeIgniter 4 Support (https://forum.codeigniter.com/forumdisplay.php?fid=30)
+--- Thread: Multiple file upload inputs to one controller function (/showthread.php?tid=84841)



Multiple file upload inputs to one controller function - Kishan Anand - 11-15-2022

Hello guys, I hope somebody can help - I would greatly appreciate.
 I have multiple file upload inputs in a form in my view. I have managed to get the files to upload successfully, but I am writing out many versions of the same function for each file upload input (8 times).
Could somebody show me how to merge all of those into one function, please. Many thanks in advance!

 File inputs from the view... I have 8 of these inputs :
PHP Code:
<input type="file" name="fileuploads[service][]" class=" form-control-xs" multiple >
<
input type="file" name="fileuploads[shipment][]" class=" form-control-xs" multiple >
<
input type="file" name="fileuploads[collection[]" class=" form-control-xs" multiple >
<
input type="file" name="fileuploads[weight][]" class=" form-control-xs" multiple >
<
input type="file" name="fileuploads[purchasing][]" class=" form-control-xs" multiple >
<
input type="file" name="fileuploads[invoice][]" class=" form-control-xs" multiple >
<
input type="file" name="fileuploads[costs][]" class=" form-control-xs" multiple >
<
input type="file" name="fileuploads[payments][]" class=" form-control-xs" multiple 


Functions in controller... I have only put two in for this example:
PHP Code:
if($this->request->getFileMultiple('fileuploads.service'))
          {
              $files $this->request->getFileMultiple('fileuploads.service');


              foreach ($files as $file) {

                  if ($file->isValid() && ! $file->hasMoved())
                  {
                      $newName $file->getRandomName();
                      $file->move(WRITEPATH.'uploads/service/'$newName);
                      $data = [
                          'shipment_id' => $new_id,
                          'filename' => $file->getClientName(),
                          'filepath' => 'uploads/service/' $newName,
                          'type' => $file->getClientExtension()
                      ];
                      $fileUploadModel = new FileUploadModel();
                      $fileUploadModel->save($data);
                  }
              }
            }

            if($this->request->getFileMultiple('fileuploads.shipment'))
            {
                $files $this->request->getFileMultiple('fileuploads.shipment');


                foreach ($files as $file) {

                    if ($file->isValid() && ! $file->hasMoved())
                    {
                        $newName $file->getRandomName();
                        $file->move(WRITEPATH.'uploads/shipment/'$newName);
                        $data = [
                            'shipment_id' => $new_id,
                            'filename' => $file->getClientName(),
                            'filepath' => 'uploads/shipment/' $newName,
                            'type' => $file->getClientExtension()
                        ];
                        $fileUploadModel = new FileUploadModel();
                        $fileUploadModel->save($data);
                    }
                }