Laravel怎么创建Zip文件并实现下载?(附代码实例)
发布时间 - 2021-10-14 00:00:00 点击率:次下面由laravel教程栏目带大家介绍laravel 中创建 zip 压缩文件并提供下载方法,希望对大家有所帮助!
Laravel 中创建 Zip 压缩文件并提供下载
如果您需要您的用户支持多文件下载的话,最好的办法是创建一个压缩包并提供下载。看下在 Laravel 中的实现。
事实上,这不是关于 Laravel 的,而是和 PHP 的关联更多,我们准备使用从 PHP 5.2 以来就存在的 ZipArchive 类 ,如果要使用,需要确保php.ini 中的 ext-zip 扩展开启。
任务 1: 存储用户的发票文件到 storage/invoices/aaa001.pdf
下面是代码展示:
$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);
例子很简单,对吗?
任务 2: 压缩 全部 文件到 storage/invoices 目录中
Laravel 方面不需要有任何改变,我们只需要添加一些简单的 PHP 代码来迭代这些文件。
$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);到这里基本就算完成了。你看,你不需要任何 Laravel 的扩展包来实现这个压缩方式。
文章转自:https://learnku.com/laravel/t/26087
# laravel
# 压缩文件
# 压缩包
# 您的
# 最好的
# 将在
# 不需要
# 你看
# 会在
# 第二个
# 这不是
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
WEB开发之注册页面验证码倒计时代码的实现
黑客入侵网站服务器的常见手法有哪些?
JavaScript常见的五种数组去重的方式
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
香港服务器部署网站为何提示未备案?
魔方云NAT建站如何实现端口转发?
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何在万网主机上快速搭建网站?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
js实现点击每个li节点,都弹出其文本值及修改
Laravel如何使用Sanctum进行API认证?(SPA实战)
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
教你用AI将一段旋律扩展成一首完整的曲子
JavaScript如何操作视频_媒体API怎么控制播放
打造顶配客厅影院,这份100寸电视推荐名单请查收
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
在线制作视频的网站有哪些,电脑如何制作视频短片?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
如何实现建站之星域名转发设置?
制作企业网站建设方案,怎样建设一个公司网站?
如何在阿里云虚拟服务器快速搭建网站?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
如何快速打造个性化非模板自助建站?
Laravel如何使用Service Container和依赖注入?(代码示例)
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
java中使用zxing批量生成二维码立牌
如何登录建站主机?访问步骤全解析
Laravel安装步骤详细教程_Laravel环境搭建指南
Laravel怎么在Blade中安全地输出原始HTML内容
如何快速生成凡客建站的专业级图册?
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何生成腾讯云建站专用兑换码?
百度浏览器如何管理插件 百度浏览器插件管理方法
黑客如何利用漏洞与弱口令入侵网站服务器?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
免费视频制作网站,更新又快又好的免费电影网站?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
js代码实现下拉菜单【推荐】
nodejs redis 发布订阅机制封装实现方法及实例代码
如何挑选高效建站主机与优质域名?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何快速生成专业多端适配建站电话?
如何快速搭建高效WAP手机网站吸引移动用户?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署


le = 'invoices/aaa001.pdf';
// 添加文件:第二个参数是待压缩文件在压缩包中的路径
// 所以,它将在 ZIP 中创建另一个名为 "storage/" 的路径,并把文件放入目录。
$zip->addFile(storage_path($invoice_file), $invoice_file);
$zip->close();
// 我们将会在文件下载后立刻把文件返回原样
return response()->download($zip_file);