Komponent HttpFoundation udostępnia obiektowe mechanizmy, które obsługują specyfikację HTTP. Aby pobrać plik z serwera skorzystamy z dobrodziejstw tych klas:

Do tworzenia archiwum ZIP można wykorzystać klasę ZipArchive, o której pisałem w tym artykule: Tworzenie archiwum ZIP.

PRZYKŁAD

/src/Controller/ZipController.php:

/templates/zip/index.html.twig:

Przejdź do strony http://localhost/public/index.php/zip, a następnie kliknij hiperłącze, aby rozpocząć pobieranie pliku archiwum.


POBIERANIE PLIKU ZIP

Do obiektu strumienia (new Stream) przekazujemy archiwum:

Z tego względu, że plik tworzony jest dynamicznie i jego rozmiar nie jest znany, strumień z plikiem archiwum przekazywany jest do obiektu klasy BinaryFileResponse:

Ustawiamy pole nagłówka odpowiedzi Content-Disposition na DISPOSITION_ATTACHMENT, czyli żądanie zapisu pliku do postaci załącznika:

Na koniec usuwamy tymczasowy plik archiwum z serwera:

I to wszystko 🙂