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 ""; + } /** * 文件名生成回调 *