From 28e3e08f86e810a46fbbd60e8c129f37a20ec74f Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Mon, 7 Jul 2025 17:50:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=8E=E5=8F=B0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E8=B7=AF=E5=BE=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/Upload.php | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/app/admin/controller/v1/Upload.php b/app/admin/controller/v1/Upload.php index a2f729be..941d9750 100644 --- a/app/admin/controller/v1/Upload.php +++ b/app/admin/controller/v1/Upload.php @@ -72,7 +72,7 @@ class Upload $webp = $image->toWebp(75); $root = config('filesystem.disks.image.root'); $filename = $param['module'] . '/' . ($name_rule() ?? date('Ymd') . '/' . md5((string)time()) . '.webp'); - $webp->save($root . '/' . $filename); + $webp->save($this->checkPath($root . '/' . $filename)); // 获取webp文件大小 $file_size = $webp->size(); // 获取webp文件mime类型 @@ -176,6 +176,32 @@ class Upload return error('上传失败'); } + /** + * 检查路径 + * + * @param string $path + * @return string + */ + private function checkPath($path): string + { + $filename = basename($path); + $dirname = dirname($path); + if (is_dir($dirname)) { + $ok = false; + if (!file_exists($dirname)) { + $ok = @mkdir($dirname, 0755, true); + } else if (!is_writable($dirname)) { + $ok = @chmod($dirname,0755); + } + if ($ok) { + return $dirname . '/' . $filename; + } + + throw new \Exception('要上传目录不可用'); + } + + return ""; + } /** * 文件名生成回调 *