Метод setContentDisposition
Метод setContentDisposition класса BinaryFileResponse
управляет заголовком Content-Disposition, который сообщает
браузеру, как обрабатывать отправляемый файл. Первым параметром
передаётся тип отображения: attachment для скачивания
или inline для показа прямо в окне браузера. Вторым
необязательным параметром передаётся имя файла, которое увидит
пользователь. Метод возвращает текущий объект ответа, что
позволяет строить цепочки вызовов.
Синтаксис
$response->setContentDisposition(string $disposition, ?string $filename = null)
Пример
Давайте отдадим файл на скачивание с именем 'article.txt':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Routing\Attribute\Route;
class FileController extends AbstractController
{
#[Route('/download', name: 'file_download')]
public function download(): BinaryFileResponse
{
$file = $this->getParameter('kernel.project_dir') . '/public/file.txt';
$res = new BinaryFileResponse($file);
$res->setContentDisposition('attachment', 'article.txt');
return $res;
}
}
?>
В результате браузер скачает файл под именем article.txt.
Пример
Давайте откроем файл прямо в браузере, без скачивания:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\Routing\Attribute\Route;
class FileController extends AbstractController
{
#[Route('/view', name: 'file_view')]
public function view(): BinaryFileResponse
{
$file = $this->getParameter('kernel.project_dir') . '/public/file.pdf';
$res = new BinaryFileResponse($file);
$res->setContentDisposition('inline', 'document.pdf');
return $res;
}
}
?>
В результате браузер покажет PDF-файл прямо на странице.
Смотрите также
-
класс
BinaryFileResponse,
который отдаёт файл в виде ответа -
метод
setFile,
который задаёт путь к отправляемому файлу -
метод
deleteFileAfterSend,
который удаляет файл после отправки -
класс
Response,
который представляет базовый HTTP-ответ