php 使用原生的 ZipArchive
类来打包 zip。
<?php
namespace App\Services;
use Exception;
use Illuminate\Support\Facades\Log;
/**
* Class Zip
*
* @package App\Services
*/
class Zip
{
/**
* @param array $path_arr 待打包的文件路径集合
* @param string $zip_path 压缩包路径
*
* @return string
*/
public static function makeZip(array $path_arr, string $zip_path): string
{
$zip = new \ZipArchive();
try {
if ($zip->open($zip_path, \ZipArchive::CREATE | \ZipArchive::OVERWRITE)) {
foreach ($path_arr as $file) {
if (!file_exists($file)) {
continue;
}
$zip->addFile($file, basename($file));
}
$zip->close();
return $zip_path;
}
} catch (\Throwable $e) {
Log::error(sprintf("%s err %s", __METHOD__, $e->getMessage()));
throw new Exception('打包出错了,请重试');
}
throw new Exception('打包出错了,请重试');
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。