Accueil Astuces et Informations Comment créer un fichier Zip dans Laravel 10 ?

Comment créer un fichier Zip dans Laravel 10 ?

3
1
Brillian Solution

Comment créer un fichier Zip et le télécharger dans Laravel 10 ? – Solution brillante. Un fichier zip est un format d’archive compressé couramment utilisé pour organiser et compresser de grandes quantités de données. C’est un moyen populaire de réduire la taille des fichiers ou dossiers volumineux pour un stockage et un partage plus efficaces. Les fichiers Zip fonctionnent en compressant un ou plusieurs fichiers ou dossiers dans une seule archive, en réduisant leur taille tout en conservant leur structure et leur contenu. Cela facilite leur transfert ou leur stockage, car ils occupent moins d’espace et peuvent être facilement téléchargés ou partagés sur Internet.

Dans cet article, je vais vous montrer les deux manières suivantes de générer un fichier zip à partir du dossier dans Laravel. Un utilisant ZipArchive et un autre utilisant stechstudio/laravel-zipstream emballer. nous allons simplement créer le dossier myFiles et créer un fichier zip à partir de ce dossier. alors, voyons les deux exemples un par un.

Dans Laravel, vous disposez de plusieurs options pour créer des fichiers zip, notamment en utilisant la classe ZipArchive ou le stechstudio/laravel-zipstream emballer. Je vais vous guider à travers les deux approches.

Utilisation de ZipArchive :

Tout d’abord, assurez-vous que l’extension ZipArchive est activée dans votre configuration PHP. Vous pouvez vérifier cela en créant un nouveau projet Laravel et en exécutant phpinfo() dans l’un de vos itinéraires ou contrôleurs. Recherchez la section ZipArchive pour vérifier si elle est activée.

Créez un nouveau dossier appelé myFiles dans le répertoire public de votre projet Laravel. Ce dossier contiendra les fichiers que vous souhaitez inclure dans le fichier zip.

Ensuite, vous pouvez créer une route ou une méthode de contrôleur pour gérer la création et le téléchargement du fichier zip. Voici un exemple :

addFile($file, basename($file));


$zip->close();

return response()->download($zipFile)->deleteFileAfterSend();

Dans cet exemple, nous utilisons la classe ZipArchive pour créer un nouveau fichier zip appelé myFiles.zip dans le répertoire public de votre projet Laravel.

Nous utilisons la fonction glob() pour obtenir un tableau de tous les fichiers du répertoire myFiles. Ensuite, nous parcourons chaque fichier en boucle, en l’ajoutant à l’archive zip à l’aide de la méthode addFile(). La fonction basename() est utilisée pour obtenir le nom du fichier sans le chemin complet.

Après avoir ajouté tous les fichiers, nous fermons l’archive zip en utilisant la méthode close().

Enfin, nous renvoyons une réponse pour télécharger le fichier zip créé et le supprimer une fois qu’il a été envoyé à l’utilisateur.

Utilisation du package stechstudio/laravel-zipstream :

Installez le package stechstudio/laravel-zipstream en exécutant la commande suivante dans votre projet Laravel :

composer require stechstudio/laravel-zipstream

Une fois le package installé, vous pouvez créer une route ou une méthode de contrôleur pour gérer la création et le téléchargement du fichier zip. Voici un exemple :

use ZipStream\ZipStream;
public function createZip()

$files = glob(public_path('myFiles/*'));
return response()->streamDownload(function () use ($files) 
    $zip = new ZipStream('myFiles.zip');

    foreach ($files as $file) 
        $zip->addFileFromPath(basename($file), $file);
    

    $zip->finish();
, 'myFiles.zip');

Dans cet exemple, nous utilisons la classe ZipStream du package stechstudio/laravel-zipstream pour créer le fichier zip à la volée sans l’enregistrer sur le disque.

Nous obtenons la liste des fichiers dans le répertoire myFiles en utilisant glob().

Ensuite, nous renvoyons une réponse diffusée en utilisant response()->streamDownload(). Dans la fonction de rappel, nous créons une nouvelle instance ZipStream avec le nom de fichier zip souhaité.

Nous parcourons chaque fichier en boucle et l’ajoutons au flux zip à l’aide de la méthode addFileFromPath(), qui prend le nom du fichier et le chemin d’accès au fichier.

Enfin, nous appelons $zip->finish() pour envoyer le fichier zip à l’utilisateur.

C’est ça! Vous avez maintenant deux exemples de création d’un fichier zip dans Laravel 10. Choisissez l’approche qui correspond à vos besoins et intégrez-la dans votre projet en conséquence.

Cet article a été mis à jour 2023-05-20 14:12:46