Да, в Symfony можно получить два файла одновременно с помощью одного запроса. Это можно сделать с использованием объекта класса Response, который предоставляет набор методов для создания и отправки HTTP-ответа.
Для начала, вам понадобится создать два объекта класса FileResponse, которые будут представлять ваши файлы. В Symfony у вас есть два варианта: использовать функцию file_get_contents для прочтения содержимого файлов и передачи его в конструктор FileResponse, или передать имя файла в конструктор и позволить Symfony самостоятельно управлять чтением файла.
После создания объектов FileResponse вам необходимо объединить их в один объект Response. Для этого вы можете использовать метод setContent, который принимает массив с объектами Response и автоматически объединяет их содержимое. Пример кода:
use SymfonyComponentHttpFoundationFileFile; use SymfonyComponentHttpFoundationBinaryFileResponse; use SymfonyComponentHttpFoundationResponse; // Путь к вашим файлам $file1 = new File('/path/to/file1.pdf'); $file2 = new File('/path/to/file2.pdf'); $response1 = new BinaryFileResponse($file1); $response2 = new BinaryFileResponse($file2); // Создаем объект Response и добавляем в него файлы $response = new Response(); $response->setContent([$response1, $response2]); // Устанавливаем заголовок Content-Disposition, чтобы браузер понял, что это вложение $response->headers->set('Content-Disposition', 'attachment; filename="files.zip"'); // Отправляем ответ пользователю $response->send();
В этом примере мы создаем два объекта BinaryFileResponse
с нашими файлами file1.pdf
и file2.pdf
, а затем создаем объект Response
, используя метод setContent
. После этого мы устанавливаем заголовок Content-Disposition
, чтобы указать браузеру, что файлы предназначены для скачивания, а не отображения в браузере. Наконец, мы отправляем ответ пользователю с помощью метода send()
.
Этот код позволит создать HTTP-ответ, в котором два файла будут объединены в архив zip и будут доступны для скачивания пользователю.