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

Метод deleteFileAfterSend

Метод deleteFileAfterSend принадлежит классу BinaryFileResponse и указывает Symfony удалить файл с диска сразу после того, как содержимое файла будет отправлено клиенту. Метод не принимает параметров и возвращает объект BinaryFileResponse, что позволяет использовать его в цепочке вызовов. По умолчанию файл не удаляется.

Синтаксис

$response->deleteFileAfterSend(bool $shouldDelete = 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('/file', name: 'file_download')] public function download(): BinaryFileResponse { $response = new BinaryFileResponse('file.txt'); $response->deleteFileAfterSend(true); return $response; } } ?>

После того как клиент получит файл 'file.txt', он будет автоматически удалён с сервера.

Пример

Давайте временно отключим удаление файла, передав 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('/file/save', name: 'file_save')] public function save(): BinaryFileResponse { $response = new BinaryFileResponse('file.txt'); $response->deleteFileAfterSend(false); return $response; } } ?>

В этом случае файл останется на диске после отправки.

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\BinaryFileResponse; use Symfony\Component\Routing\Attribute\Route; class ReportController extends AbstractController { #[Route('/report', name: 'report_download')] public function download(): BinaryFileResponse { $path = sys_get_temp_dir() . '/report.txt'; file_put_contents($path, 'article'); $response = new BinaryFileResponse($path); $response->deleteFileAfterSend(true); return $response; } } ?>

После отправки файл '/tmp/report.txt' будет удалён автоматически, что позволяет не заботиться о ручной очистке временных файлов.

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

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