Como compactar arquivos em ZIP no Laravel 8

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

via: techsolutionstuff.com

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Scroll to Top