Le contenu de cet article concerne la création de fichiers compressés Zip dans Laravel et la fourniture d'exemples de code à télécharger. Il a une certaine valeur de référence. Les amis dans le besoin pourront s'y référer. vous aide.
Si vous avez besoin que vos utilisateurs prennent en charge plusieurs téléchargements de fichiers, le meilleur moyen est de créer un package compressé et de le fournir en téléchargement. Jetez un œil à l’implémentation dans Laravel.
En fait, il ne s'agit pas de Laravel, mais plutôt de PHP. Nous allons utiliser la classe ZipArchive qui existe depuis PHP 5.2. Si vous souhaitez l'utiliser, vous devez vous en assurer php.iniext-zip dans 🎜> est activée. Tâche 1 : Stocker le fichier de facture de l'utilisateur dans storage/invoices/aaa001.pdf
Voici l'affichage du code :
L'exemple est simple, n'est-ce pas ?$zip_file = 'invoices.zip'; // 要下载的压缩包的名称 // 初始化 PHP 类 $zip = new \ZipArchive(); $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); $invoice_file = 'invoices/aaa001.pdf'; // 添加文件:第二个参数是待压缩文件在压缩包中的路径 // 所以,它将在 ZIP 中创建另一个名为 "storage/" 的路径,并把文件放入目录。 $zip->addFile(storage_path($invoice_file), $invoice_file); $zip->close(); // 我们将会在文件下载后立刻把文件返回原样 return response()->download($zip_file);
Tâche 2 : Compresser tous les fichiers dans le répertoire storage/invoices
Aucune modification n'est requise du côté de Laravel, il nous suffit d'ajouter du code PHP simple pour parcourir ces fichiers.
Ceci est fondamentalement terminé. Vous voyez, vous n'avez besoin d'aucune extension Laravel pour implémenter cette méthode de compression.$zip_file = 'invoices.zip'; $zip = new \ZipArchive(); $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); $path = storage_path('invoices'); $files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)); foreach ($files as $name => $file) { // 我们要跳过所有子目录 if (!$file->isDir()) { $filePath = $file->getRealPath(); // 用 substr/strlen 获取文件扩展名 $relativePath = 'invoices/' . substr($filePath, strlen($path) + 1); $zip->addFile($filePath, $relativePath); } } $zip->close(); return response()->download($zip_file);
[Recommandations associées :
Tutoriel vidéo PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!