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

Класс UploadedFile

Класс UploadedFile используется в Symfony для представления файла, загруженного пользователем через HTML-форму. Объект этого класса автоматически создаётся при обработке запроса, если в форме есть поле с типом file. Через методы класса можно получить оригинальное имя файла, его MIME-тип, расширение, размер, а также переместить файл в нужную директорию на сервере.

Класс наследуется от File и расширяет его методами, специфичными для загруженных файлов. Экземпляр UploadedFile можно получить в контроллере через объект Request методом files.

Синтаксис

use Symfony\Component\HttpFoundation\File\UploadedFile; $file = new UploadedFile( string $path, string $originalName, ?string $mimeType = null, ?int $error = null, bool $test = false );

Пример

Давайте создадим форму для загрузки файла и получим объект UploadedFile в контроллере:

<?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')] public function upload(Request $request): Response { $file = $request->files->get('document'); if ($file === null) { return new Response('no file'); } return new Response($file->getClientOriginalName()); } } ?>

Пример

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

<?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')] public function upload(Request $request): Response { $file = $request->files->get('document'); if ($file === null) { return new Response('no file'); } $file->move( $this->getParameter('kernel.project_dir') . '/uploads', 'renamed.txt' ); return new Response('moved'); } } ?>

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

moved

Пример

Давайте получим основные характеристики загруженного файла:

<?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('/info', name: 'upload_info')] public function info(Request $request): Response { $file = $request->files->get('document'); if ($file === null) { return new Response('no file'); } $res = [ $file->getClientOriginalName(), $file->getClientOriginalExtension(), $file->getClientMimeType(), $file->getSize(), ]; return new Response(implode(' | ', $res)); } } ?>

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

"article.txt | txt | text/plain | 1024"

Пример

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

<?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('/check', name: 'upload_check')] public function check(Request $request): Response { $file = $request->files->get('document'); if ($file === null) { return new Response('no file'); } if (!$file->isValid()) { return new Response($file->getErrorMessage()); } return new Response('valid'); } } ?>

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

valid

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

  • класс File,
    базовый класс для работы с файлами
  • метод getClientOriginalName,
    который возвращает оригинальное имя загруженного файла
  • метод move,
    который перемещает загруженный файл в нужную директорию
  • метод isValid,
    который проверяет, был ли файл загружен без ошибок
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить