Атрибут MapUploadedFile
Атрибут MapUploadedFile вешается на параметр
метода контроллера и превращает файл, отправленный
в запросе, в объект UploadedFile. Первым
параметром передаётся имя поля формы, в которое был
загружен файл. Если поле необязательное, можно
указать nullable: true.
Синтаксис
#[MapUploadedFile(name, nullable: false)]
Пример
Давайте примем файл из поля image и сохраним его в каталог:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Attribute\MapUploadedFile;
use Symfony\Component\Routing\Attribute\Route;
class UploadController extends AbstractController
{
#[Route('/upload', name: 'upload_file')]
public function upload(
#[MapUploadedFile('image')] UploadedFile $image
): Response {
$image->move($this->getParameter('kernel.project_dir') . '/public/uploads');
return new Response('file uploaded');
}
}
?>
Результат выполнения кода:
"file uploaded"
Пример
Давайте сделаем файл необязательным и выведем его имя:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Attribute\MapUploadedFile;
use Symfony\Component\Routing\Attribute\Route;
class UploadController extends AbstractController
{
#[Route('/upload-optional', name: 'upload_optional')]
public function upload(
#[MapUploadedFile('image', nullable: true)] ?UploadedFile $image = null
): Response {
if ($image === null) {
return new Response('file not uploaded');
}
return new Response($image->getClientOriginalName());
}
}
?>
Результат выполнения кода при загрузке файла 'abcde.txt':
"abcde.txt"
Смотрите также
-
атрибут
MapRequestPayload,
который превращает тело запроса в объект -
атрибут
MapQueryParameter,
который принимает параметр из строки запроса -
атрибут
MapQueryString,
который превращает строку запроса в объект -
атрибут
MapEntity,
который получает сущность из базы данных