【问题标题】:I need to create .Zip file in Laravel and my code does not work我需要在 Laravel 中创建 .Zip 文件,但我的代码不起作用
【发布时间】:2019-12-25 07:18:35
【问题描述】:

这是我第一次在 StackOverflow 上发帖。我需要创建一个包含多个图像的 zip 文件。我已经尝试过 Zipper 和 ZipArchive,但我的代码仍然失败。

$zip = new \ZipArchive();
foreach ($students as $student) {
    $download = 'album' . $student->album_id . '.zip';
    if ($zip->open(public_path('albums/' . $student->album_id . '/' . $download), \ZipArchive::CREATE) === TRUE) {
        $files = Storage::allFiles('public/albums/' . $student->album_id . '/image_files');
        foreach ($files as $file) {
            $zip->addFile($file);
        }
        $zip->close();
    }
}

我可以保证所有图片都存在。我把图片放在Storage/app/public/albums/$student->album_id/image_files/。请帮帮我。

【问题讨论】:

  • 您是否收到任何错误消息?如果是这样,请发布它们,.zip 是否也会在磁盘上创建,创建后它的内容是什么?
  • @IgorIlic 我没有收到任何错误消息,这就是问题所在。看起来一切都很好,但不是。尚未创建 zip 文件。正如我在上面的帖子中所说,zip 文件的内容是图像。
  • imgbbb.com/image/LvXxSi 这是文件夹结构,我把需要压缩的图片放在那里

标签: php laravel zip ziparchive zipper


【解决方案1】:

首先,您可以添加一个额外的步骤来使用 PHP 内置函数验证您的文件是否存在:file_exists()

大多数情况下,如果您的文件不存在,则不会将任何文件添加到 zip 中,您的代码将运行而不会引发任何错误,但仍然无法运行。

您传递给 addFile() 的路径不正确。 addFile() 需要存储文件的绝对路径。您需要添加这一行 $file_path = storage_path("app/{$file}");

见下面的代码:

$zip = new \ZipArchive();
foreach ($students as $student) {
    $download = 'album' . $student->album_id . '.zip';
    if ($zip->open(public_path('albums/' . $student->album_id . '/' . $download), \ZipArchive::CREATE) === TRUE) {
        $files = Storage::allFiles('public/albums/' . $student->album_id . '/image_files');
        
        foreach ($files as $file) {
            $file_path = storage_path("app/{$file}");
            if (file_exists($file_path)) {
                $zip->addFile($filepath);
            }
        }
        $zip->close();
    }
}

或者,如果您希望下载任何压缩文件,您可以在下载代码末尾返回下载响应:

return response()->download(public_path('albums/' . $student->album_id . '/' . $download));

【讨论】:

    猜你喜欢
    • 2021-04-18
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多