accessKeyId = getenv('OSS_ACCESSID'); $this->accessKeySecret = getenv('OSS_ACCESSSECRET'); $this->bucket = getenv('OSS_BUCKET'); $this->endpoint = getenv('OSS_ENDPOINT'); $this->domain = getenv('OSS_DOMAIN'); $this->ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endpoint); } /** * 上传图片到 OSS * @param string $filePath 本地文件路径 * @param string $objectKey OSS上存储的对象名称 * @return string 图片的 URL */ public function uploadImage($filePath, $objectKey) { try { // 上传文件到 OSS $this->ossClient->uploadFile($this->bucket, $objectKey, $filePath); // 构造图片的私有 URL $url = $this->generatePrivateUrl($objectKey); return $url; } catch (OssException $e) { // 错误处理 throw new \RuntimeException('OSS Error: ' . $e->getMessage()); } catch (\Throwable $th) { // 错误处理 throw new BusinessException('Error: ' . $th->getMessage()); } } /** * 生成图片的私有访问 URL * @param string $objectKey * @return string */ public function generatePrivateUrl($objectKey, $expireTime = 10800) { // 生成 OSS 私有 URL(有效期为 3600 秒) $originalUrl = $this->ossClient->signUrl($this->bucket, $objectKey, $expireTime); // // 使用正则表达式替换 $originalUrl = preg_replace( '#^https?://[^/]+#', 'https://static.hnzhwlkj.cn', $originalUrl ); return $originalUrl; } /** * 删除 OSS 上的文件 * @param string $objectKey OSS上存储的对象名称 * @return bool 删除是否成功 */ public function deleteFile($objectKey) { try { // 删除 OSS 上的文件 $this->ossClient->deleteObject($this->bucket, $objectKey); return true; } catch (OssException $e) { // 错误处理 throw new \RuntimeException('OSS Delete Error: ' . $e->getMessage()); } catch (\Throwable $th) { // 错误处理 throw new BusinessException('Delete Error: ' . $th->getMessage()); } } }