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

Метод setFile

Класс BinaryFileResponse используется для отправки файлов клиенту. Метод setFile позволяет задать или заменить файл, который будет отправлен в ответе. Первым параметром передаётся путь к файлу, вторым - флаг $create. Если он равен true, создаётся новый экземпляр BinaryFileResponse, если false - меняется файл у текущего объекта.

Синтаксис

public function setFile( string|File $file, bool $create = true, bool $public = false, bool $autoLastModified = true ): static

Пример

Давайте отправим клиенту файл 'file.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 { $res = new BinaryFileResponse('file.txt'); return $res; } } ?>

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

"file contents"

Пример

Давайте создадим ответ без файла и затем зададим его через setFile:

<?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 { $res = new BinaryFileResponse('file.txt'); $res->setFile('article.txt'); return $res; } } ?>

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

"article contents"

Пример

Давайте передадим вторым параметром false, чтобы изменить файл у текущего объекта:

<?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 { $res = new BinaryFileResponse('file.txt'); $res->setFile('user.txt', false); return $res; } } ?>

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

"user contents"

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

  • класс BinaryFileResponse,
    который отправляет файлы клиенту
  • метод setContentDisposition,
    который задаёт заголовок Content-Disposition
  • метод deleteFileAfterSend,
    который удаляет файл после отправки
  • класс StreamedResponse,
    который отправляет поток данных клиенту
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить