Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

zipfile - Laravel 8, creating zip file for all the images in public folder. Facing file error : ZipArchive::addFile(): Invalid or uninitialized Zip object

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...