Laravel 8,为公共文件夹中的所有图像创建 zip 文件。面对文件错误:ZipArchive::addFile(): Invalid or uninitialized Zip object

Posted

技术标签:

【中文标题】Laravel 8,为公共文件夹中的所有图像创建 zip 文件。面对文件错误:ZipArchive::addFile(): Invalid or uninitialized Zip object【英文标题】:Laravel 8, creating zip file for all the images in public folder. Facing file error : ZipArchive::addFile(): Invalid or uninitialized Zip object 【发布时间】:2021-01-11 12:27:54 【问题描述】:

我正在尝试压缩我的公共“img”文件夹中的所有文件,但我不断收到此错误。 我检查了很多关于堆栈溢出的帖子,代码似乎没问题。我想我在这里遗漏了一些东西。有人可以帮忙吗?

错误异常 ZipArchive::addFile(): 无效或未初始化的 Zip 对象

Laravel 版本: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));
   

【问题讨论】:

【参考方案1】:

我认为你错过了传递参数

改变这个:

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

到:

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

再试一次

【讨论】:

嗨,我有这个用户 $zipper = new ZipArchive();所以 $zip 不会工作 所以把它改成 $zipper :|你在这里: if ($zipper->open(public_path($fileName), ZipArchive::CREATE) === TRUE)

以上是关于Laravel 8,为公共文件夹中的所有图像创建 zip 文件。面对文件错误:ZipArchive::addFile(): Invalid or uninitialized Zip object的主要内容,如果未能解决你的问题,请参考以下文章

在Laravel 5中,如何获取公用文件夹中所有文件的列表?

在 laravel 中更新时如何删除公共/文件夹中的多个图像?

如何访问公用文件夹外的图像(Laravel)[重复]

如何通过应用程序中的表单为用户创建个人资料?我正在使用 laravel 8

Laravel 存储符号链接图像视图

未找到 Laravel 公共存储文件夹