diff --git a/app/Service/common/upload/QiniuStorageService.php b/app/Service/common/upload/QiniuStorageService.php new file mode 100644 index 00000000..7da8b6d0 --- /dev/null +++ b/app/Service/common/upload/QiniuStorageService.php @@ -0,0 +1,110 @@ +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.'); + } + + /** + * 上传图片 + * + * @param string $filePath 文件本地路径 + * @param string $key 上传到七牛云的文件名 + * @return array|bool + */ + 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; + } +} diff --git a/composer.json b/composer.json index b7cb7d20..25feae12 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,8 @@ "php": "^8.2", "firebase/php-jwt": "^6.11", "laravel/framework": "^12.0", - "laravel/tinker": "^2.10.1" + "laravel/tinker": "^2.10.1", + "qiniu/php-sdk": "^7.14" }, "require-dev": { "fakerphp/faker": "^1.23", diff --git a/composer.lock b/composer.lock index cefdbfa4..278bb939 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bb43516eae1e73202940191fe341f64a", + "content-hash": "86a39f4473522b8df75d7ae593c3faf0", "packages": [ { "name": "brick/math", @@ -2172,6 +2172,69 @@ ], "time": "2025-03-24T10:02:05+00:00" }, + { + "name": "myclabs/php-enum", + "version": "1.8.5", + "source": { + "type": "git", + "url": "https://github.com/myclabs/php-enum.git", + "reference": "e7be26966b7398204a234f8673fdad5ac6277802" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/e7be26966b7398204a234f8673fdad5ac6277802", + "reference": "e7be26966b7398204a234f8673fdad5ac6277802", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "1.*", + "vimeo/psalm": "^4.6.2 || ^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyCLabs\\Enum\\": "src/" + }, + "classmap": [ + "stubs/Stringable.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP Enum contributors", + "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + } + ], + "description": "PHP Enum implementation", + "homepage": "https://github.com/myclabs/php-enum", + "keywords": [ + "enum" + ], + "support": { + "issues": "https://github.com/myclabs/php-enum/issues", + "source": "https://github.com/myclabs/php-enum/tree/1.8.5" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", + "type": "tidelift" + } + ], + "time": "2025-01-14T11:49:03+00:00" + }, { "name": "nesbot/carbon", "version": "3.9.1", @@ -3137,6 +3200,66 @@ }, "time": "2025-03-16T03:05:19+00:00" }, + { + "name": "qiniu/php-sdk", + "version": "v7.14.0", + "source": { + "type": "git", + "url": "https://github.com/qiniu/php-sdk.git", + "reference": "ee752ffa7263ce99fca0bd7340cf13c486a3516c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/ee752ffa7263ce99fca0bd7340cf13c486a3516c", + "reference": "ee752ffa7263ce99fca0bd7340cf13c486a3516c", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-xml": "*", + "myclabs/php-enum": "~1.5.2 || ~1.6.6 || ~1.7.7 || ~1.8.4", + "php": ">=5.3.3" + }, + "require-dev": { + "paragonie/random_compat": ">=2", + "phpunit/phpunit": "^4.8 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4", + "squizlabs/php_codesniffer": "^2.3 || ~3.6" + }, + "type": "library", + "autoload": { + "files": [ + "src/Qiniu/functions.php", + "src/Qiniu/Http/Middleware/Middleware.php" + ], + "psr-4": { + "Qiniu\\": "src/Qiniu" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Qiniu", + "email": "sdk@qiniu.com", + "homepage": "http://www.qiniu.com" + } + ], + "description": "Qiniu Resource (Cloud) Storage SDK for PHP", + "homepage": "http://developer.qiniu.com/", + "keywords": [ + "cloud", + "qiniu", + "sdk", + "storage" + ], + "support": { + "issues": "https://github.com/qiniu/php-sdk/issues", + "source": "https://github.com/qiniu/php-sdk/tree/v7.14.0" + }, + "time": "2024-10-25T08:39:01+00:00" + }, { "name": "ralouphie/getallheaders", "version": "3.0.3", diff --git a/config/cc.php b/config/cc.php index 86288e45..e0828ec1 100755 --- a/config/cc.php +++ b/config/cc.php @@ -43,12 +43,6 @@ return [ * 阿里云oss配置 */ 'oss' => [ - 'truncated_list' => [ - 'avatar', - 'logo', - 'url', - 'image_url', - ], 'redis_key' => 'xk_oss_url_', 'ali' => [ 'accessKeyId' => env('OSS_ACCESS_KEY_ID'), @@ -56,6 +50,12 @@ return [ 'endpoint' => env('OSS_ENDPOINT'), 'bucket' => env('OSS_BUCKET'), 'domain' => env('OSS_DOMAIN'), + ], + 'qiniu' => [ + 'access_key' => 'RPQlZUd2yrL3kR8CC4BpTGV6FhGr11npBzf6IuCT', + 'secret_key' => 'b-796uVY1InOKSVecpY8VBpO7Cdubo1Tv4RcOfMY', + 'bucket' => 'ccspa', + 'domain' => 'svso4t548.hd-bkt.clouddn.com', ] ], /*