bagart / selectel-storage
Selectel CDN 存储用于 League Flysystem。Laravel 推荐使用
dev-master
2018-09-20 09:14 UTC
Requires
- php: ~7.1
- league/flysystem-cached-adapter: ^1.0
- league/flysystem-rackspace: ^1.0
- php-opencloud/openstack: ^3.0
This package is not auto-updated.
Last update: 2024-09-27 15:50:31 UTC
README
可选:Laravel 5.* 存储
设置 Selectel 官方网站
- 在 Selectel 注册
- 在 Selectel 存储中创建容器(建议使用私有访问)
- 创建用于安全使用的用户
- 为容器授予自定义访问权限(读/写)
安装 composer 包
composer require bagart/selectel-storage
配置 ENV
添加到 $_ENV(Laravel: .env 文件)
SELECTEL_URL=https://auth.selcdn.ru/ SELECTEL_USERNAME=00000_some_user SELECTEL_PASSWORD=___PASSWORD___
可选
为安全使用无需密码访问文件的私有文档 - 准备 TEMP_URL_SECRET 原因:使用临时密钥访问私有文件
添加到 $_ENV(Laravel: .env 文件)
SELECTEL_TEMP_URL_SECRET=___ANY_SAFE_STRING_AS_SECRET___
预设 ___ANY_SAFE_STRING_AS_SECRET___ 到 CDN
#put username and password curl -i -X POST https://api.selcdn.ru/v2.0/tokens -H 'Content-type: application/json' -d '{"auth": {"passwordCredentials": {"username": "00000_some_user", "password": "___PASSWORD___"}}}' #put selectel_id, ___TOKEN___ and ___ANY_SAFE_STRING_AS_SECRET___ curl -i -X POST https://api.selcdn.ru/v1/SEL_00000 -H "X-Auth-Token: ___TOKEN___" -H "X-Account-Meta-Temp-URL-Key: ___ANY_SAFE_STRING_AS_SECRET___"
配置 APP
Laravel: 在 config/filesystems.php 中的 disks 部分添加
'some_named_container' => [ 'driver' => 'selectel', 'serviceName' => env('SELECTEL_SERVICE_NAME'), 'username' => env('SELECTEL_USERNAME'), 'password' => env('SELECTEL_PASSWORD'), 'endpoint' => env('SELECTEL_URL'), 'container' => env('FS_NS_DEFAULT', 'default'), 'tenantId' => env('SELECTEL_TENANT_ID'), 'tenantName' => env('SELECTEL_TENANT_NAME'), 'region' => env('SELECTEL_REGION'), # 'cache' => [ # 'store' => env('SELECTEL_CACHE_DRIVER') # ?? env('CACHE_DRIVER') # ?? 'redis', # 'expire' => env('SELECTEL_CACHE_EXPIRE', 600), # 'prefix' => 'cache-selectel-'.env('FS_NS_DEFAULT', 'default'), # ], ],
旧版
对于小于 5.5 版本的 Laravel(在实际版本中不需要)在 config/app.php 中的 service_provider 部分添加
BAGArt\SelectelStorage\SelectelServiceProvider::class,
Laravel 使用
dump([ 'put' => Storage::disk('some_named_container')->put('test_file_name', 'some test content'), 'get' => Storage::disk('some_named_container')->get('test_file_name'), 'delete' => Storage::disk('some_named_container')->delete('test_file_name'), ]);
原生使用
//example in configure section $config_selectel = config('filesystem.disks.some_named_container'); $disk = new Filesystem( new SelectelAdapter( (new SelectelOpenStack( $config_selectel['endpoint'], $config_selectel )) ->buildContainer() ) );