Метод file
Метод file класса AbstractController
создаёт объект ответа BinaryFileResponse,
который передаёт браузеру указанный файл.
Первым параметром передаётся путь к файлу,
вторым - имя файла для скачивания,
третьим - нужно ли принудительно скачивать файл.
Метод удобен для выдачи документов, изображений
и других файлов из контроллера.
Синтаксис
file(string $file, string $fileName = null, bool $inline = false): BinaryFileResponse
Пример
Давайте отдадим файл 'article.pdf' из папки 'files':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_file')]
public function index(): BinaryFileResponse
{
return $this->file('files/article.pdf');
}
}
?>
Браузер отобразит файл 'files/article.pdf'.
Пример
Давайте зададим имя файла для скачивания:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_file')]
public function index(): BinaryFileResponse
{
return $this->file('files/article.pdf', 'article.pdf');
}
}
?>
При скачивании файл получит имя 'article.pdf'.
Пример
Давайте принудительно скачаем файл, передав третий параметр:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/download', name: 'article_download')]
public function download(): BinaryFileResponse
{
return $this->file('files/article.pdf', 'article.pdf', true);
}
}
?>
Браузер скачает файл вместо его отображения.
Смотрите также
-
класс
AbstractController,
который предоставляет базовые методы контроллера -
метод
stream,
который отдаёт поток содержимого в браузер -
метод
render,
который рендерит Twig-шаблон -
метод
redirect,
который выполняет перенаправление