uploadService = new UploadService(); } /** * 通用文件上传接口 */ public function upload(Request $request): Response { try { $userId = $this->getUserId($request); // 可选,没有token则为null $partition = $request->post('partition', 'other'); $category = $request->post('category', 'general'); $result = $this->uploadService->upload($request, $partition, $category, $userId); return $this->success($result, '上传成功'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * 图片上传接口 */ public function uploadImage(Request $request): Response { try { $userId = $this->getUserId($request); // 可选,没有token则为null $category = $request->post('category', 'general'); $result = $this->uploadService->uploadImage($request, $category, $userId); return $this->success($result, '上传成功'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * 二手车图片上传接口 */ public function uploadUsedCarImage(Request $request): Response { try { $userId = $this->getUserId($request); // 可选,没有token则为null $result = $this->uploadService->uploadUsedCarImage($request, $userId); return $this->success($result, '上传成功'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * 批量上传图片(二手车专用) */ public function batchUploadImages(Request $request): Response { try { $userId = $this->getUserId($request); // 可选,没有token则为null $files = $request->files(); if (empty($files)) { return $this->error('请选择要上传的文件'); } $results = []; $errors = []; foreach ($files['files'] ?? [] as $index => $file) { try { // 创建临时请求对象处理单个文件 $tempRequest = new Request( $request->method(), $request->path(), $request->headers(), ['file' => $file] ); $result = $this->uploadService->uploadUsedCarImage($tempRequest, $userId); $results[] = $result; } catch (\Exception $e) { $errors[] = [ 'index' => $index, 'error' => $e->getMessage(), ]; } } return $this->success([ 'success' => $results, 'errors' => $errors, 'total' => count($results), 'failed' => count($errors), ], '批量上传完成'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * 删除文件 */ public function deleteFile(Request $request): Response { try { $userId = $this->getUserId($request); // 可选,用于权限验证 $fileId = (int)$request->post('id'); if ($fileId <= 0) { return $this->error('无效的文件ID'); } $this->uploadService->deleteFile($fileId, $userId); return $this->success(null, '删除成功'); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * 获取文件信息 */ public function getFileInfo(Request $request): Response { try { $fileId = (int)$request->get('id'); if ($fileId <= 0) { return $this->error('无效的文件ID'); } $info = $this->uploadService->getFileInfo($fileId); return $this->success($info); } catch (\Exception $e) { return $this->error($e->getMessage()); } } /** * 获取分区配置 */ public function getPartitionConfig(Request $request): Response { try { $configs = UploadService::getPartitionConfigs(); return $this->success($configs); } catch (\Exception $e) { return $this->error($e->getMessage()); } } }