Codeigniter 4: загрузка файлов с помощью файла move_uploaded_file - PullRequest
0 голосов
/ 09 марта 2020

Я только начал перемещать проект CodeIgniter 3 в CodeIgniter 4.

Все отлично работает, кроме загрузки файлов.

Я бы хотел сохранить загруженные пользователем файлы в / writable / uploads. Ниже приведен код, который я использую для перемещения загруженного файла в нужное место.

            $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);                 
            }

Я предполагаю, что это потому, что CI4 хранит доступную для записи папку вне папки publi c.

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

Это сработало для меня, и я надеюсь, что это сработает и для вас. В codeigniter 4, пожалуйста, используйте это для загрузки ваших файлов и перемещения в вашем контроллере.


if($imagefile = $this->request->getFiles())
{
    if($img = $imagefile['gfile'])
    {
        if ($img->isValid() && ! $img->hasMoved())
        {
            $newName = $img->getRandomName(); //This is if you want to change the file name to encrypted name
            $img->move(WRITEPATH.'uploads', $newName);

        }
    }
}

Затем в вашем html Используйте это

<input type="file" name="gfile">

I надеюсь, это поможет вам еще привлечь мое внимание.

0 голосов
/ 10 марта 2020

Вы не используете встроенные функции CodeIgniter. Все, что показано в вашем коде, является PHP функциями. Если вы хотите использовать встроенные функции CI, просмотрите документацию, связанную с @Boominathan Elan go.

Чтобы получить файл из запроса:

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

Как указано здесь

Чтобы переместить файл с помощью функции CI:

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

Как указано здесь

...