场景
在项目开发过程中,有时需要一次性下载多个文件,实现思路:可以把多个文件上传到一个目录中,下载时将文件夹的多个文件压缩成zip包,下载zip包。
用laravel实现多文件一次性下载
实现代码如下:
// 需要开通zip扩展
if(class_exists('ZipArchive')) {
$dir = "uploads";
if($dir){
$path = public_path($dir);
$zip_name = public_path('files.zip');
$zip = null;
$count = 0;
//迭代器
$files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
foreach ($files as $name => $file){
//排除文件夹
if (!$file->isDir()) {
//是否实例化了ZipArchive对象,
if(!$zip) {
$zip = new \ZipArchive();
//打开zip包
$zip->open($zip_name, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
}
//获取文件的绝对路径
$filePath = $file->getRealPath();
//把文件添加的zip包中
$zip->addFile($filePath, $file->getFilename());
$count++;
}
}
if($zip){
//关闭zip包
$zip->close();
}
if($count){
return response()->download($zip_name);
}else{
return response('', 404);
}
}else{
return response('', 404);
}
}else{
return response('', 404);
}
出处:www.l1mn.com
原文标题:laravel实现多文件一次性下载
原文地址:https://www.l1mn.com/p/4361x2.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
Copyright © L1MN.COM 联系方式:l1mnfw@163.com
aa
2023年09月16日 23:52
学到了,谢谢作者分享