В чем причина перезаписи суперглобальных $ _FILES при загрузке нескольких файлов с помощью средства воспламенения кода - PullRequest
0 голосов
/ 14 сентября 2018

Предположим, что пост-запрос подтвержден, и функциональный код достаточно хорош, и просто наблюдение, в основном загрузка нескольких файлов. Образец кода Code Igniter выглядит следующим образом:

Беспокойство равно , почему супер глобальная переменная типа $ _FILES равнаперезаписано? Это хорошая практика ???

        $filesCount = count($_FILES['files']['name']);
        for($i = 0; $i < $filesCount; $i++){
            $_FILES['file']['name']     = $_FILES['files']['name'][$i];
            $_FILES['file']['type']     = $_FILES['files']['type'][$i];
            $_FILES['file']['tmp_name'] = $_FILES['files']['tmp_name'][$i];
            $_FILES['file']['error']     = $_FILES['files']['error'][$i];
            $_FILES['file']['size']     = $_FILES['files']['size'][$i];

            // File upload configuration
            $uploadPath = 'uploads/files/';
            $config['upload_path'] = $uploadPath;
            $config['allowed_types'] = 'jpg|jpeg|png|gif';

            // Load and initialize upload library
            $this->load->library('upload', $config);
            $this->upload->initialize($config);

            // Upload file to server
            if($this->upload->do_upload('file')){
                // Uploaded file data
                $fileData = $this->upload->data();
                $uploadData[$i]['file_name'] = $fileData['file_name'];
                $uploadData[$i]['uploaded_on'] = date("Y-m-d H:i:s");
            }
        }

1 Ответ

0 голосов
/ 14 сентября 2018

На самом деле, функция do_upload() принимает только имя формы.

По умолчанию подпрограмма загрузки ожидает, что файл поступит из поля формы с именем files в вашем случае, и форма должна иметь тип multipart (enctype = "multipart / form-data").

Это основная причина, по которой мы переопределяем переменную $_FILES.

Класс загрузки файлов в CodeIgniter

...