Laravel使用.zip下载多个文件



当我尝试使用。zip下载文件时遇到一些问题

use ZipArchive;
.
.
.
public function donwload(){
$zip      = new ZipArchive;
$fileName = 'documents.zip';
if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE) {          
foreach ( Documents::all() as  $document) {     
$zip->addFile( public_path('uploads/documents/'.$document->filename) , $document->filename);
}
$zip->close();
}
return response()->download(public_path($fileName));
}

我有这个错误:

ZipArchive::addFile(): No such file or directory

解决方案是在$zip->addFile()之前添加此条件

public function donwload(){
$zip      = new ZipArchive;
$fileName = 'documents.zip';
if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE) {          
foreach ( Documents::all() as  $document) {    
if( file_exists(public_path("uploads/documents/".$document->filename)) ){ 
$zip->addFile( public_path('uploads/documents/'.$document->filename) , $document->filename);
}
}
$zip->close();
}
return response()->download(public_path($fileName));
}

当一个文件在目录中不存在时,会发生此错误。

最新更新