【问题标题】:How to gzip folder in Laravel project如何在 Laravel 项目中压缩文件夹
【发布时间】:2018-11-15 17:16:38
【问题描述】:

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

storage_path().'myFolder'

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

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

【问题讨论】:

  • Gzip 是一种流压缩格式,它没有文件或目录的概念。您需要使用像 tar 和 gzip 这样的存档格式,或者使用像 Zipfile 这样的组合格式。
  • /bin/bash ? $ tar -zcf ./archive.tar.gz ./myFolder。来自 php shell_exec('tar -zcf [path_to]/archive.tar.gz [path_from]/myFolder')
  • 到目前为止你有什么尝试?

标签: php laravel laravel-5 gzip archive


【解决方案1】:

这里有一个帮助函数。

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 压缩即可。

【讨论】:

    【解决方案2】:

    对我来说,这似乎不是 Laravel 特有的问题。对于普通的 zip 压缩,有可用的 Laravel 包(即zanysoft/laravel-zip),但对于 gzip,你可能想看看this answer。对我来说,它看起来不需要自己的包来完成这项工作。

    顺便说一句,您可以使用storage_path('myFolder') 来代替storage_path().'myFolder'。这将正确连接路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      相关资源
      最近更新 更多