diff --git a/app/Http/Controllers/Api/V1/ImageController.php b/app/Http/Controllers/Api/V1/ImageController.php new file mode 100644 index 00000000..9522015b --- /dev/null +++ b/app/Http/Controllers/Api/V1/ImageController.php @@ -0,0 +1,58 @@ +hasHeader('Authorization')) { + $guards = array_keys(config('auth.guards')); + + if (empty($guards)) { + $guards = [null]; + } + + foreach ($guards as $guard) { + if (Auth::guard($guard)->check()) { + Auth::shouldUse($guard); + break; + } + } + + if (! Auth::check()) { + throw new AuthenticationException('Authentication failed.'); + } + } + + try { + /** @var User $user */ + $user = Auth::user(); + $image = $service->store($request, $user); + } catch (UploadException $e) { + return $this->error($e->getMessage()); + } catch (\Throwable $e) { + Log::error("Api 上传文件时发生异常,", ['message' => $e->getMessage(), 'trace' => $e->getTraceAsString()]); + if (config('app.debug')) { + return $this->error($e->getMessage()); + } + return $this->error('服务异常,请稍后再试'); + } + return $this->success('上传成功', $image->setAppends(['pathname', 'links'])->only( + 'key', 'name', 'extension', 'pathname', 'origin_name', 'size', 'mimetype', 'md5', 'sha1', 'links' + )); + } +} diff --git a/resources/views/common/api.blade.php b/resources/views/common/api.blade.php index bb6ce1fb..bc40bb31 100644 --- a/resources/views/common/api.blade.php +++ b/resources/views/common/api.blade.php @@ -14,8 +14,6 @@

验证方式

当前版本接口采用 「HTTP 基本验证」的方式验证授权,通过接口获取 token 后,通过设置请求 header 标头来验证请求,例如: - "Authorization": "1|1bJbwlqBfnggmOMEZqXT5XusaIwqiZjCDs7r1Ob5" - 或者: "Authorization": "Bearer 1|1bJbwlqBfnggmOMEZqXT5XusaIwqiZjCDs7r1Ob5"

如果未设置 Authorization 的情况下请求上传接口,将被视为游客上传。

@@ -26,7 +24,7 @@

上传图片

- POST /upload + POST /upload

Headers

@@ -113,9 +111,19 @@ 图片数据 - id - Integer - 图片唯一ID + key + String + 图片唯一密钥 + + + name + String + 图片名称 + + + extension + String + 图片拓展名 pathname diff --git a/routes/api.php b/routes/api.php index a173790f..1c4323d1 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,8 +1,8 @@ 'v1'], function () { - Route::post('upload', [Controller::class, 'upload']); + Route::post('upload', [ImageController::class, 'upload']); Route::group([ 'middleware' => 'auth:sanctum',