РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
210 of 1361 menu

Атрибут files класса Request

Атрибут files класса Request содержит массив загруженных файлов, которые пришли вместе с HTTP-запросом. Ключами массива выступают имена полей формы, а значениями - объекты класса UploadedFile. Если поле формы называется image, то обратиться к файлу можно так: $request->files->get('image').

Свойство files является объектом FileBag, который расширяет класс ParameterBag. Это значит, что для работы с ним доступны методы get, set, has, all и другие.

Синтаксис

$request->files->get(string $key, mixed $default = null)

Пример

Давайте примем загруженный файл из поля image и выведем его оригинальное имя:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class UploadController extends AbstractController { #[Route('/upload', name: 'upload_file')] public function upload(Request $request): Response { $file = $request->files->get('image'); if ($file === null) { return new Response('no file'); } return new Response($file->getClientOriginalName()); } } ?>

Результат выполнения кода для файла abcde.png:

"abcde.png"

Пример

Давайте проверим, был ли файл загружен, с помощью метода has и сохраним его в каталог uploads:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class UploadController extends AbstractController { #[Route('/upload', name: 'upload_file')] public function upload(Request $request): Response { if (!$request->files->has('image')) { return new Response('no file'); } $file = $request->files->get('image'); $file->move( $this->getParameter('kernel.project_dir') . '/uploads', 'article.png' ); return new Response('uploaded'); } } ?>

Результат выполнения кода:

"uploaded"

Пример

Давайте получим сразу несколько файлов из полей images[] и выведем их имена:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class UploadController extends AbstractController { #[Route('/upload-many', name: 'upload_many')] public function uploadMany(Request $request): Response { $files = $request->files->get('images'); $names = []; foreach ($files as $file) { $names[] = $file->getClientOriginalName(); } return new Response(implode(', ', $names)); } } ?>

Результат выполнения кода для файлов abcde.png и hello.png:

"abcde.png, hello.png"

Смотрите также

  • класс Request,
    который представляет HTTP-запрос
  • атрибут query,
    который хранит GET-параметры запроса
  • атрибут request,
    который хранит POST-параметры запроса
  • атрибут cookies,
    который хранит cookies запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить