如何压缩 Laravel 项目中的文件夹

How to gzip folder in Laravel project

我想将 Laravel 项目中的文件夹及其内容压缩到尽可能高的压缩级别的 gzip 存档中。

storage_path().'myFolder'

这并不意味着 通过 HTTP 传输所以请不要混淆服务器响应 gzip 压缩。

我只想要一个存档,但没有找到信息 Laravel 是否有任何用于此目的的工具,有什么想法吗?

这对我来说似乎不是 Laravel 的具体问题。对于普通的 zip 压缩,有 Laravel 个包可用(即 zanysoft/laravel-zip), but for gzip you might want to have a look at the this answer。对我来说,它看起来不需要自己的包来完成这项工作。

顺便说一下,您会使用 storage_path('myFolder') 而不是 storage_path().'myFolder'。这将正确连接路径。

这里有一个辅助函数给你。

if (!function_exists('gzip')) {
    function gzip($filename, $disk = 'local', $delete_original = false)
    {
        $disk = Storage::disk($disk);
        $data = $disk->get($filename);
        $out_file = "$filename.gz";

        $gzdata = gzencode($data, 9);
        $disk->put($out_file, $gzdata);
        $fp = fopen($disk->path($out_file), "w");
        $result = fwrite($fp, $gzdata);
        fclose($fp);

        if ($result && $delete_original) {
            $disk->delete($filename);
        }

        return $result > 0;

    }
}

在 laravel 7.x 上测试并为我工作。只需确保您的机器上启用了 gzip 压缩。