Neste artigo, nós iremos ver o exemplo de como criar um arquivo zip (zip file) no Laravel 8. Algumas vezes alguns clientes tem o requisito de que suas funcionalidades criem arquivos compactados no formato zip para a documentação, imagens e depois possam realizar o download. Então, utilizando a função ziparchive você irpá criar este arquivo e disponibilizá-lo para download usando o Laravel 8.
Neste exemplo, nós iremos criar o arquivo zip sem utilizar nenhum pacote externo. Laravel fornece a classe ZipArchive para criar arquivos zip no larave. Então, nós iremos utilizar o ZipArchive em laravel e criar um arquivo Zip.
Então, vamos criar e fazer o download de um arquivo zip usando o ziparchive em laravel 8.
No código abaixo Eu criei uma função no controlador laravel e adicionei a classe ZipArchive como dependencia.
Nota: Eu criei a pasta ZipArchive_Examplo em uma pasta publica e adicionei algumas imagens. Então, você precisa também criar esta pasta e adicionar alguns arquivos para poder realizar o teste.
Passo 1: Adicionar rota
Neste passo, nós iremos adicionar uma rota. Então, adicione o código abaixo no arquivo web.php
routes/web.php
use IlluminateSupportFacadesRoute;
use AppHttpControllersZipController ;
Route::get('ziparchive_examplo', [ZipController ::class, 'ZipArchiveExamplo']);
Passo 2: Criar o controlador
Agora, nós iremos criar um controlador e adicionar a nossa função ZipArchiveExamplo nele.
app/Http/Controllers/ZipFileController.php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use ZipArchive;
class ZipController extends Controller
{
public function ZipArchiveExamplo()
{
$zip = new ZipArchive;
$fileName = 'Zipfile_examplo.zip';
if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE)
{
$files = File::files(public_path('ZipArchive_Examplo'));
foreach ($files as $key => $value) {
$file = basename($value);
$zip->addFile($value, $file);
}
$zip->close();
}
return response()->download(public_path($fileName));
}
}
Agora, execute o comando abaixo no laravel.
php artisan serve
Agora você pode abrir a URL abaixo em seu navegador para testar:
http://localhost:8000/ziparchive_examplo