Como compactar arquivos em ZIP no Laravel 8

Publicidade

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 Illuminate\Support\Facades\Route;
use App\Http\Controllers\ZipController ;

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 App\Http\Controllers;

use Illuminate\Http\Request;
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

Laravel
setembro 28, 2022
0

Comentários

Menu

Pesquisar

Últimos Comentários

Fale Comigo