[TOC]
最近在做的一个项目使用的是Azure服务器,其中数据库、redis、和对象存储和国内厂商都有不同,最直观的区别就是Azure基本都是SSL方式进行连接,相对国内云服务器厂商的服务接入没有那么无脑,今天简单记录下Azure提供的blob存储在lumen框架的接入
几个轮子
1 | composer require league/flysystem |
配置
Laravel/Lumen 提供了很强大的文件管理系统和云存储功能的集成
/Users/zhimma/Data/www/lumen/vendor/laravel/lumen-framework/config
目录复制一份到项目根目录下,主要检查/Users/zhimma/Data/www/lumen/config/filesystems.php
这个文件是否存在
下面进行配置:
/Users/zhimma/Data/www/lumen/config/filesystems.php
在配置s3下方添加如下内容:
1
2
3
4
5
6
7...
'azure' => [
'driver' => 'azure',
'name' => env('AZURE_STORAGE_NAME', 'xxx'),
'key' => env('AZURE_STORAGE_KEY', 'xxx'),
'container' => env('AZURE_STORAGE_CONTAINER', 'xxx'),
],/Users/zhimma/Data/www/lumen/bootstrap/app.php
- 添加
$app->configure('filesystems');
表示加载该配置文件项 - 添加
$app->register(\Illuminate\Filesystem\FilesystemServiceProvider::class);
加载该服务提供者
- 添加
/Users/zhimma/Data/www/lumen/app/Providers/AppServiceProvider.php
新增下面的方法
1
2
3
4
5
6
7
8
9
10
11
12public function boot()
{
Storage::extend('azure', function ($app, $config) {
$endpoint = sprintf('DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s;EndpointSuffix=core.chinacloudapi.cn',
$config['name'], $config['key'], $config['url'] ?? null, $config['prefix'] ?? null);
$client = BlobRestProxy::createBlobService($endpoint);
$adapter = new AzureBlobStorageAdapter($client, $config['container'], $config['prefix'] ?? null);
return new Filesystem($adapter);
});
}参考文档:https://learnku.com/docs/laravel/5.5/filesystem/1319#custom-filesystems
上传测试
新增好路由后,我们进行上传测试
1 | class UploadController extends Controller |
返回如下
1 | { |
至此配置完成
参考
https://matthewdaly.co.uk/blog/2016/10/24/creating-an-azure-storage-adapter-for-laravel/
https://stackoverflow.com/questions/56267900/how-to-use-azure-blob-in-lumen