| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- namespace app\extra\service\basic;
- use app\model\system\SystemConfig;
- use Tinywan\Storage\Adapter\CosAdapter;
- use Tinywan\Storage\Adapter\LocalAdapter;
- use Tinywan\Storage\Adapter\QiniuAdapter;
- class UploadService
- {
- /**
- * 配置
- * @return array
- */
- public function setConfigVal(): array
- {
- $data = (new SystemConfig)->where("type","storage")->column("value","name");
- $config = [];
- $config['storage']['default'] = $data['type'];
- $config['storage']['include'] = !empty($data['allow_exts']) ? explode(",",$data['allow_exts']) : [];
- $config['storage']['exclude'] = !empty($data['noallow_exts']) ? explode(",",$data['noallow_exts']) : [];
- $config['storage']['nums'] = 10;
- $config['storage']['single_limit'] = 1024 * 1024 * 200;
- $config['storage']['total_limit'] = 1024 * 1024 * 200;
- switch ($data['type'])
- {
- case "local":
- $config['storage']['local'] = [
- 'adapter' => LocalAdapter::class,
- 'root' => public_path().'/uploads/storage/',
- 'dirname' => function () {
- return date('Ymd');
- },
- 'domain' => '//'.request()->host(),
- 'uri' => '/uploads/storage/', // 如果 domain + uri 不在 public 目录下,请做好软链接,否则生成的url无法访问
- 'algo' => 'sha1',
- ];
- break;
- case "qiniu":
- $config['storage']['qiniu'] = [
- 'adapter' => QiniuAdapter::class,
- 'accessKey' => $data['qiniu_access_key'],
- 'secretKey' => $data['qiniu_secret_key'],
- 'bucket' => $data['qiniu_bucket'],
- 'dirname' => 'storage',
- 'domain' => $this->setDomain($data['oss_http_protocol'],$data['qiniu_http_domain']),
- ];
- break;
- case "oss":
- $config['storage']['oss'] = [
- 'adapter' => \Tinywan\Storage\Adapter\OssAdapter::class,
- 'accessKeyId' => $data['oss_access_key'],
- 'accessKeySecret' => $data['oss_secret_key'],
- 'bucket' => $data['oss_bucket'],
- 'dirname' => function () {
- return 'storage';
- },
- 'domain' => $this->setDomain($data['oss_http_protocol'],$data['oss_http_domain']),
- 'endpoint' => $data['oss_region'],
- 'algo' => 'sha1',
- ];
- break;
- case "cos":
- $config['storage']['cos'] = [
- 'adapter' => CosAdapter::class,
- 'secretId' => $data['cos_access_key'],
- 'secretKey' => $data['cos_secret_key'],
- 'bucket' => $data['cos_bucket'],
- 'dirname' => 'storage',
- 'domain' => $this->setDomain($data['oss_http_protocol'],$data['cos_http_domain']),
- 'region' => $data['cos_region'],
- ];
- break;
- default:
- break;
- }
- return $config;
- }
- /**
- * 协议域名
- * @param string $type
- * @param string $domain
- * @return string
- */
- protected function setDomain(string $type,string $domain): string
- {
- if ($type == "auto") {
- return "//".$domain;
- }
- return $type."://".$domain;
- }
- }
|