如何压缩 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 压缩。
我想将 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 压缩。