uploadImage($filePath, $objectKey); $privateUrl = $ossService->generatePrivateUrl($objectKey); // 记录文件信息到数据库 $uploadedFilesService = new UploadedFilesService(); $fileInfo = [ 'file_name' => basename($objectKey), 'file_path' => $objectKey, 'file_size' => $size, 'file_type' => $mime, 'original_name' => $originalName, ]; $recordResult = $uploadedFilesService->recordFileInfo($fileInfo, null, $scene, $category); $data = [ 'original_name' => $originalName, 'file_name' => $objectKey, 'file_url' => $privateUrl, 'file_id' => $recordResult['id'] ?? null, 'partition' => $scene, 'category' => $category, ]; return $data; } catch (\Throwable $e) { Log::error($e->getMessage(),$param); throw new BusinessException($e->getMessage()); } } /** * 删除 OSS 上的文件 * * @param array $param * - object_key: OSS 对象键名-oss路径(必需) * - file_id: 数据库文件记录ID(可选,用于删除数据库记录) * @return bool 删除是否成功 * * 示例 * $uploadService = new UploadService(); * * 只删除 OSS 文件 * $uploadService->deleteOssFile([ * 'object_key' => 'vehicle_album/documents/20241201/abc123.pdf' * ]); * * 同时删除 OSS 文件和数据库记录 * $uploadService->deleteOssFile([ * 'object_key' => 'vehicle_album/images/20241201/abc123.jpg', * 'file_id' => 123 * ]); */ public function deleteOssFile($objectKey,$fileId = null) { try { if (empty($objectKey)) { Log::error('OSS对象键名不能为空', $objectKey); throw new BusinessException('OSS对象键名不能为空'); } $uploadedFilesService = new UploadedFilesService(); // 如果提供了文件ID,同时删除数据库记录 if ($fileId) { $uploadedFilesService->deleteFile($fileId); }else{ $uploadedFilesService = new UploadedFilesService(); if (empty($fileId)) { $where = ['file_path' => $objectKey]; $file = $uploadedFilesService->getFile($where); $fileId = $file->id; } if(!empty($fileId)){ $uploadedFilesService->deleteFile($fileId); } } // 删除 OSS 上的文件 $ossService = new OssService(); $ossService->deleteFile($objectKey); Log::info('OSS文件删除成功', ['object_key' => $objectKey, 'file_id' => $fileId]); return true; } catch (\Throwable $e) { Log::error('删除OSS文件失败: ' . $e->getMessage()); throw new BusinessException('删除OSS文件失败: ' . $e->getMessage()); } } }