如何在 Laravel 6 中解压 zip 文件

Jim*_*mmy 4 php zip laravel

我正在运行最新的 Laravel 6 并想要上传并解压 ZIP 文件。我尝试使用 Composer chumper/zipper - 但似乎它与 Laravel 6 不兼容。所以我尝试使用 PHP zipArchive。

我正在尝试的过程的代码是:

                    $docfileext1 =  $request->file('czipfile')->getClientOriginalExtension();
                $random_filename1 = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz123"), -5);
                $newfilename1 = $random_filename1.'.'.$docfileext1;
                //First check this is a ZIP file
                if ($docfileext1 <> 'zip') {
                    return back(); //->witherrors('this is not a ZIP file. Please select a zip file');
                }

                $request->file('czipfile')->move(
                    base_path() . '/storage/app/'.$oid.'/courses/'.$inscourse, $newfilename1
                );

                //Now unzip
                $target_path = base_path() . '/storage/app/' .$oid. '/courses/'. $inscourse.'/'.$newfilename1;              
                $extract_path = base_path() . '/storage/app/' .$oid. '/courses/'. $inscourse.'/';


                $zip = new ZipArchive();
                $x = $zip->open($target_path);
                if ($x === true) {
                    $zip->extractTo($extract_path);
                    $zip->close();
                }
Run Code Online (Sandbox Code Playgroud)

zip 已成功上传到正确的位置。

$target_path 的示例是/var/www/html/project/storage/app/1/courses/1/random.zip

但是,我收到错误:

SplFileInfo::getSize():/tmp/php59z5uT 统计失败

我检查了 php.ini 文件,其大小和内存远高于我尝试使用的 700kb 测试 zip 文件。

当我点击该功能时会弹出该信息$zip->open

关于我在这里做错了什么有什么想法或者有更好的方法吗?衷心感谢。

Moh*_*ani 7

我也在寻找这个,我找到了这个方法,我不是专家,但这可以完成工作

使用:vipsoft/解压

我的代码是这样的

if(isset($request->zipfile)){
   $unzipper  = new Unzip();
   $file = $request->zipfile->store('public'); //store file in storage/app/zip
   $filenames = $unzipper->extract(storage_path('app/'.$file),storage_path('app/public'));
   //extract the files in storage/app/public 
   dd($filenames); //show file names
}
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮到你