Загрузка файла с помощью twig и Slim framework (версия 2) – PHP

Я использую UserFrosting систему управления пользователями, и у меня возникли проблемы с загрузкой файла через сообщение формы, вот что я пробовал

Так выглядит мой twig-файл.

<form name="eveniment" method="post" action="{{form_action}}" enctype="multipart/form-data"> ... <input type="file" class="form-control" name="poza" id="poza"> ... </form>` 

Так выглядит мой контроллер

 $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["poza"]["name"]); $uploadOk = 1; $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); // Check if image file is a actual image or fake image $check = getimagesize($_FILES); if($check !== false) { $ms->addMessage("success", "File is an image - " . $check["mime"] . "."); $uploadOk = 1; } else { $ms->addMessage("danger", "File is not an image."); $uploadOk = 0; } $ms->addMessage("success", $target_file); // Check if file already exists if (file_exists($target_file)) { $ms->addMessage("danger", "Sorry, file already exists."); $uploadOk = 0; } // Check file size if ($_FILES["poza"]["size"] > 500000) { $ms->addMessage("danger", "Sorry, your file is too large."); $uploadOk = 0; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { $ms->addMessage("danger", "Sorry, your file was not uploaded."); // if everything is ok, try to upload file } else { if (move_uploaded_file($_FILES["poza"]["name"], $target_file)) { $ms->addMessage("success", "The file ". basename( $_FILES["poza"]["name"]). " has been uploaded."); } else { $ms->addMessage("danger", "Sorry, there was an error uploading your file."); } } 

маршрут

 $app->post('/evenimente/?', function () use ($app) { $controller = new UF\EvenimentController($app); return $controller->createEveniment(); }); 

Настройка PHP

file_uploads On

upload_max_filesize 128M

Каждый другой ввод публикуется успешно, за исключением этого с типом = «файл».

У меня нет никаких ошибок, я пробовал разные способы, но без успеха. Также, если я печатаю $_FILES["poza"]["name"] он будет пустым.

Этот ответ предполагает, что вы используете UserFrosting, так как вы связали этот вопрос в чате UserFrosting Gitter.

UserFrosting включает CSRFGuard Middleware, чтобы убедиться, что все POST-запросы возникли локально. Вам нужно включить токен CSRF, чтобы гарантировать, что промежуточное ПО не блокирует запрос POST.

Поскольку токен уже находится в глобальных переменных Twig, самый простой способ – использовать в нем скрытое поле формы с токеном CSRF:

 <input type="hidden" name="{{csrf_key}}" value="{{csrf_token}}">