diff --git a/crmeb/app/services/system/config/SystemStorageServices.php b/crmeb/app/services/system/config/SystemStorageServices.php index 85d0c3f7e..d59cf6084 100644 --- a/crmeb/app/services/system/config/SystemStorageServices.php +++ b/crmeb/app/services/system/config/SystemStorageServices.php @@ -189,7 +189,10 @@ class SystemStorageServices extends BaseServices try { $upload = UploadService::init($storageInfo->type); - $upload->deleteBucket($storageInfo->name, $storageInfo->region); + $res = $upload->deleteBucket($storageInfo->name, $storageInfo->region); + if (false === $res) { + throw new AdminException($upload->getError()); + } } catch (\Throwable $e) { throw new AdminException($e->getMessage()); } @@ -369,10 +372,37 @@ class SystemStorageServices extends BaseServices } break; case 5:// cos 京东云 + $upload = UploadService::init($type); + $res = $upload->listbuckets(); + $list = $res['Buckets']; + $location = explode('.', $res['@metadata']['effectiveUri'])[1] ?? 'cn-north-1'; + $config = $this->getStorageConfig($type); + foreach ($list as $item) { + if (!$this->dao->count(['name' => $item['Name'], 'access_key' => $config['accessKey']])) { + $data[] = [ + 'type' => $type, + 'access_key' => $config['accessKey'], + 'name' => $item['Name'], + 'region' => $location, + 'acl' => 'public-read', + 'status' => 0, + 'domain' => $this->getDomain($type, $item['Name'], $location), + 'is_delete' => 0, + 'add_time' => time(), + 'update_time' => time() + ]; + } + } + break; case 6:// cos 华为云 case 7:// cos 天翼云 $upload = UploadService::init($type); $list = $upload->listbuckets(); + if (!empty($list['Name'])) { + $newList = $list; + $list = []; + $list[] = $newList; + } $config = $this->getStorageConfig($type); foreach ($list as $item) { if (!$this->dao->count(['name' => $item['Name'], 'access_key' => $config['accessKey']])) { @@ -437,13 +467,13 @@ class SystemStorageServices extends BaseServices $domainName = 'https://' . $name . ($appid ? '-' . $appid : '') . '.cos.' . $reagion . '.myqcloud.com'; break; case 5:// cos 京东云 - $domainName = 'https://' . $name . '.cos.' . $reagion . '.jdcloud-oss.com'; + $domainName = 'https://' . $name . '.s3.' . $reagion . '.jdcloud-oss.com'; break; case 6:// cos 华为云 - $domainName = 'https://' . $name . '.cos.' . $reagion . '.myhuaweicloud.com'; + $domainName = 'https://' . $name . '.obs.' . $reagion . '.myhuaweicloud.com'; break; case 7:// cos 天翼云 - $domainName = 'https://' . $name . '.cos.' . $reagion . '.ctyun.cn'; + $domainName = 'https://' . $name . '.obs.' . $reagion . '.ctyun.cn'; break; } return $domainName; diff --git a/crmeb/crmeb/services/upload/extend/obs/Client.php b/crmeb/crmeb/services/upload/extend/obs/Client.php index 222b04b8f..b2ad87782 100644 --- a/crmeb/crmeb/services/upload/extend/obs/Client.php +++ b/crmeb/crmeb/services/upload/extend/obs/Client.php @@ -422,7 +422,7 @@ class Client extends BaseClient if ($this->type == 'hw') { $url = '.myhuaweicloud.com'; // 华为 } else { - $url = $region . '.ctyun.cn'; // 天翼 + $url = '.ctyun.cn'; // 天翼 } if ($bucket) { return $bucket . '.obs.' . $region . $url; diff --git a/crmeb/crmeb/services/upload/storage/Jdoss.php b/crmeb/crmeb/services/upload/storage/Jdoss.php index 867a63275..b8c5d1f72 100644 --- a/crmeb/crmeb/services/upload/storage/Jdoss.php +++ b/crmeb/crmeb/services/upload/storage/Jdoss.php @@ -207,7 +207,7 @@ class Jdoss extends BaseUpload { try { $res = $this->app()->listBuckets(); - return $res['ListAllMyBucketsResult']['Buckets'] ?? []; + return $res ?? []; } catch (\Throwable $e) { return []; } @@ -277,8 +277,7 @@ class Jdoss extends BaseUpload try { $this->storageRegion = $region; $this->app()->deleteBucket([ - 'bucketName' => $name, // REQUIRED - 'forceDelete' => false + 'Bucket' => $name, // REQUIRED ]); return true; } catch (AcmException $e) { diff --git a/crmeb/crmeb/services/upload/storage/Tyoss.php b/crmeb/crmeb/services/upload/storage/Tyoss.php index 61e9b862c..1e90dad7c 100644 --- a/crmeb/crmeb/services/upload/storage/Tyoss.php +++ b/crmeb/crmeb/services/upload/storage/Tyoss.php @@ -361,10 +361,10 @@ class Tyoss extends BaseUpload { try { $this->app()->PutBucketCors($name, $region, [ - 'AllowedHeaders' => ['*'], - 'AllowedMethods' => ['PUT', 'GET', 'POST', 'DELETE', 'HEAD'], - 'AllowedOrigins' => ['*'], - 'ExposeHeaders' => ['ETag', 'Content-Length', 'x-cos-request-id'], + 'AllowedHeader' => ['*'], + 'AllowedMethod' => ['PUT', 'GET', 'POST', 'DELETE', 'HEAD'], + 'AllowedOrigin' => ['*'], + 'ExposeHeader' => ['ETag', 'Content-Length', 'x-cos-request-id'], 'MaxAgeSeconds' => 100 ]); return true; @@ -372,7 +372,6 @@ class Tyoss extends BaseUpload return $this->setError($e->getMessage()); } } - public function getTempKeys() { // TODO: Implement getTempKeys() method. diff --git a/template/admin/src/pages/setting/storage/index.vue b/template/admin/src/pages/setting/storage/index.vue index 3b0f0f41f..fab0b5b78 100644 --- a/template/admin/src/pages/setting/storage/index.vue +++ b/template/admin/src/pages/setting/storage/index.vue @@ -29,6 +29,15 @@
腾讯云cos开通方法:点击查看
++ 京东云cos开通方法:点击查看 +
++ 华为云cos开通方法:点击查看 +
++ 天翼云cos开通方法:点击查看 +
第一步: 添加【存储空间】(空间名称不能重复)
第二步: 开启【使用状态】
@@ -52,6 +61,9 @@