From 0db7f7d3e91911457cb0fdc6f69ae0c055c32d6a Mon Sep 17 00:00:00 2001 From: yanwenwu Date: Sat, 25 Jan 2020 16:24:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9composer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package/filesystem-cloud/README.md | 58 +++++++++++++ package/filesystem-cloud/composer.json | 32 +++++++ package/filesystem-cloud/src/Filesystem.php | 86 +++++++++++++++++++ package/filesystem-cloud/src/Service.php | 10 +++ .../filesystem-cloud/src/drivers/Local.php | 7 ++ .../src/drivers/OssDriver.php | 34 ++++++++ .../src/drivers/QcloudDriver.php | 16 ++++ .../src/drivers/QiniuDriver.php | 18 ++++ 8 files changed, 261 insertions(+) create mode 100644 package/filesystem-cloud/README.md create mode 100644 package/filesystem-cloud/composer.json create mode 100644 package/filesystem-cloud/src/Filesystem.php create mode 100644 package/filesystem-cloud/src/Service.php create mode 100644 package/filesystem-cloud/src/drivers/Local.php create mode 100644 package/filesystem-cloud/src/drivers/OssDriver.php create mode 100644 package/filesystem-cloud/src/drivers/QcloudDriver.php create mode 100644 package/filesystem-cloud/src/drivers/QiniuDriver.php diff --git a/package/filesystem-cloud/README.md b/package/filesystem-cloud/README.md new file mode 100644 index 0000000..fcec69d --- /dev/null +++ b/package/filesystem-cloud/README.md @@ -0,0 +1,58 @@ +## Think-Filesystem-cloud + +### 要求 + - php 7.1 + - topthink/framework 6.0.0 + +### 使用 +```php +composer require jaguarjack/think-filesystem-cloud +``` + +### 配置 +config/filesystem.php +```php +"disks" => [ + // oss 配置 + 'oss' => [ + 'type' => 'oss', + 'prefix' => '', + 'access_key' => ''; + 'secret_key' => ''; + 'end_point' => ''; // ssl:https://iidestiny.com + 'bucket' => ''; + 'is_cname' => true + ], + // 七牛配置 + 'qiniu' => [ + 'type' => 'qiniu', + 'access_key' => '', + 'secret_key' => '', + 'bucket' => '', + 'domain' => '', + ], + // 腾讯云配置 + 'qcloud' => [ + 'type' => 'qcloud', + 'region' => '', + 'credentials' => [ + 'appId' => , // 域名中数字部分 + 'secretId' => '', + 'secretKey' => '', + ], + 'bucket' => 'test', + 'timeout' => 60, + 'connect_timeout' => 60, + 'cdn' => '您的 CDN 域名', + 'scheme' => 'https', + 'read_from_cdn' => false, + ] +``` + +### 感谢 + - [iiDestiny/flysystem-oss](https://github.com/iiDestiny/flysystem-oss) + - [overtrue/flysystem-qiniu](https://github.com/overtrue/flysystem-qiniu) + - [overtrue/flysystem-cos](https://github.com/overtrue/flysystem-cos) + +### 协议 + MIT \ No newline at end of file diff --git a/package/filesystem-cloud/composer.json b/package/filesystem-cloud/composer.json new file mode 100644 index 0000000..6e11324 --- /dev/null +++ b/package/filesystem-cloud/composer.json @@ -0,0 +1,32 @@ +{ + "name": "jaguarjack/think-filesystem-cloud", + "description": "cloud filesystem for thinkphp6.0", + "type": "library", + "license": "MIT", + "authors": [ + { + "name": "jaguarjack", + "email": "njphper@gmail.com" + } + ], + "minimum-stability": "dev", + "require": { + "guzzlehttp/guzzle": "^6.3", + "overtrue/flysystem-qiniu": "^1.0", + "overtrue/flysystem-cos": "^2.0", + "iidestiny/flysystem-oss": "^1.3", + "jaguarjack/think-filesystem-cloud": "dev-master" + }, + "autoload": { + "psr-4": { + "jaguarjack\\filesystem\\cloud\\": "src" + } + }, + "extra": { + "think": { + "services": [ + "jaguarjack\\filesystem\\cloud\\Service" + ] + } + } +} diff --git a/package/filesystem-cloud/src/Filesystem.php b/package/filesystem-cloud/src/Filesystem.php new file mode 100644 index 0000000..7cc6475 --- /dev/null +++ b/package/filesystem-cloud/src/Filesystem.php @@ -0,0 +1,86 @@ +driver($name); + } + + protected function resolveType(string $name) + { + return $this->getDiskConfig($name, 'type', 'local'); + } + + protected function resolveConfig(string $name) + { + return $this->getDiskConfig($name); + } + + /** + * 获取缓存配置 + * @access public + * @param null|string $name 名称 + * @param mixed $default 默认值 + * @return mixed + */ + public function getConfig(string $name = null, $default = null) + { + if (!is_null($name)) { + return $this->app->config->get('filesystem.' . $name, $default); + } + + return $this->app->config->get('filesystem'); + } + + public function resolveClass(string $type): string + { + if ($this->namespace || false !== strpos($type, '\\')) { + $class = false !== strpos($type, '\\') ? $type : $this->namespace . Str::studly($type) . 'Driver'; + + if (class_exists($class)) { + return $class; + } + } + + throw new InvalidArgumentException("Driver [$type] not supported."); + } + + /** + * 获取磁盘配置 + * @param string $disk + * @param null $name + * @param null $default + * @return array + */ + public function getDiskConfig($disk, $name = null, $default = null) + { + if ($config = $this->getConfig("disks.{$disk}")) { + return Arr::get($config, $name, $default); + } + + throw new InvalidArgumentException("Disk [$disk] not found."); + } + + /** + * 默认驱动 + * @return string|null + */ + public function getDefaultDriver() + { + return $this->getConfig('default'); + } +} \ No newline at end of file diff --git a/package/filesystem-cloud/src/Service.php b/package/filesystem-cloud/src/Service.php new file mode 100644 index 0000000..8ea823c --- /dev/null +++ b/package/filesystem-cloud/src/Service.php @@ -0,0 +1,10 @@ +app->bind('filesystem', Filesystem::class); + } +} \ No newline at end of file diff --git a/package/filesystem-cloud/src/drivers/Local.php b/package/filesystem-cloud/src/drivers/Local.php new file mode 100644 index 0000000..33a635d --- /dev/null +++ b/package/filesystem-cloud/src/drivers/Local.php @@ -0,0 +1,7 @@ +