accessKey = config('cc.oss.qiniu.access_key'); $this->secretKey = config('cc.oss.qiniu.secret_key'); $this->bucket = config('cc.oss.qiniu.bucket'); $this->domain = config('cc.oss.qiniu.domain'); } /** * 获取实例 * @return null|static */ public static function getInstance(): null|static { $name = get_called_class(); if (!isset(self::$_instance[$name])) { self::$_instance[$name] = new static(); } return self::$_instance[$name]; } /** * 上传图片 * * @param string $filePath 文件本地路径 * @param string $key 上传到七牛云的文件名 * @return array|bool * @throws Exception */ public function uploadImage($filePath, $key): bool|array { return $this->uploadFile($filePath, $key); } /** * 上传视频 * * @param string $filePath 文件本地路径 * @param string $key 上传到七牛云的文件名 * @return array|bool */ public function uploadVideo($filePath, $key): bool|array { return $this->uploadFile($filePath, $key); } /** * 删除图片 * * @param string $key 七牛云存储的文件名 * @return bool */ public function deleteImage($key): bool { return $this->deleteFile($key); } /** * 删除视频 * * @param string $key 七牛云存储的文件名 * @return bool */ public function deleteVideo($key): bool { return $this->deleteFile($key); } /** * 上传文件 * * @param string $filePath 文件本地路径 * @param string $key 上传到七牛云的文件名 * @return array|bool * @throws Exception */ private function uploadFile(string $filePath, string $key): bool|array { $auth = new Auth($this->accessKey, $this->secretKey); $token = $auth->uploadToken($this->bucket); $uploadMgr = new UploadManager(); list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath); if ($err !== null) { return false; } else { return [ 'key' => $ret['key'], 'url' => $this->domain . '/' . $ret['key'] ]; } } /** * 删除文件 * * @param string $key 七牛云存储的文件名 * @return bool */ private function deleteFile(string $key): bool { $auth = new Auth($this->accessKey, $this->secretKey); $bucketMgr = new BucketManager($auth); $err = $bucketMgr->delete($this->bucket, $key); return $err === null; } }