Laravel 使用 .zip 下载多个文件

问题描述 投票:0回答:1

当我尝试使用 .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
laravel zip
1个回答
0
投票

解决办法就是在

$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));
}

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

© www.soinside.com 2019 - 2024. All rights reserved.