Pracuję ostatnio trochę z Laravelem, zatem w przyszłości może powstać kilka krótkich wpisów na ten temat. Dzisiaj pierwsza rzecz, prosta ale często przydatna – pakowanie plików do ZIP z opcjonalnym pobieraniem archiwum.

Tworzenie archiwum ZIP
Skorzystamy z klasy ZipArchive.
use ZipArchive;
Zaczniemy od krótkiej deklaracji ścieżki i nazwy nowego archiwum ZIP.
$downloadDir= '../download'; $archiveFileName = 'archive.zip';
Tworzymy nowy obiekt klasy ZipArchive.
$zip = new ZipArchive;
Sprawdzamy, czy archiwum może być utworzone we wskazanej ścieżce. Tutaj za chwilę będziemy pakować pliki.
if ($zip->open($downloadDir. '/' . $archiveFileName, ZipArchive::CREATE) === TRUE)
{
// tutaj pakujemy pliki
$zip->close();
} Pakowanie plików
Sprawdzamy, czy plik istnieje, a następnie dorzucamy do do paczki. Opcjonalnie możemy przypisać mu nową nazwę.
$file = '../path/to/file.pdf'; if(file_exists($file)) $zip->addFile($file, 'New Name.pdf');
Pobieranie archiwum ZIP
Przekazujemy ścieżkę pliku, jego nazwę…
if(file_exists($downloadDir. '/' . $archiveFileName))
{
return response()->download($downloadDir. '/' . $archiveFileName, $archiveFileName, $headers);
} Naszym nagłówkiem będzie:
$headers = array(
'Content-Type' => 'application/octet-stream',
); Po wykonaniu skryptu przeglądarka uruchomi pobieranie.

Podsumowanie
To w zasadzie wszystko. Pełny kod możecie podejrzeć na moim GitHubie.
Tagi: archiwum • Laravel • PHP • pobieranie • top • zip • ZipArchive
