0

I am trying to zip all the files inside my public 'img' folder but I keep getting this error. I have checked many posts on stack overflow and the code seems to be ok. I think I am missing something here. Can some one please help?

ErrorException ZipArchive::addFile(): Invalid or uninitialized Zip object

Laravel version : 8.11.2

use Illuminate\Http\Request;
use ZipArchive;
use File;

class DownloadController extends Controller
{
public function zipFile(){       

    $zipper = new ZipArchive();
    $filename = 'newzip.zip';
    
    if ($zipper->open(public_path($filename), ZipArchive::CREATE === TRUE))
    {
        $files = File::files(public_path('img'));        
        foreach($files as $key => $val){
           $relativeNameInZipFile = basename($val);
           $zipper->addFile($val, $relativeNameInZipFile);
        }
        $zipper->close();
    }
    return response()->download( public_path($filename));
   }
}
Abhimanyu Baidya
  • 95
  • 1
  • 1
  • 10

1 Answers1

-1

i think you are miss passing the arguments

change this:

if ($zipper->open(public_path($filename), ZipArchive::CREATE === TRUE))

to:

  if ($zip->open(public_path($fileName), ZipArchive::CREATE) === TRUE)

and try again