MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
详细步骤参考:CentOS 7中使用Docker运行MinIO作为对象存储服务器
安装好以后,我们要使用亚马逊S3云存储服务接口
来调用这个服务。
不得不说的是关于文件系统php有个一统天下的神器 Flysystem,yii2也有其相应的扩展可以用。
还是composer 安装,安装慢的时候别忘了改composer国内源
composer require creocoder/yii2-flysystem
还得装这么个扩展
composer require league/flysystem-aws-s3-v3
return [
//...
'components' => [
//...
'fs' => [
'class' => 'creocoder\flysystem\AwsS3Filesystem',
'key' => 'keykeykeykeykeykeykeykey',
'secret' => 'secretsecretsecretsecretsecret',
'bucket' => 'bestyii',
'region' => 'beijing',
'version' => 'latest',
// 'baseUrl' => 'your-base-url',
//'prefix' => 'webapp',
// 'options' => [],
'endpoint' => 'http://oss.bestyii.com',
'pathStyleEndpoint' => true
],
],
];
写入字符串到文件
Yii::$app->fs->write('filename.ext', 'contents');
使用文档流方式写入文件
$stream = fopen('/path/to/somefile.ext', 'r+');
Yii::$app->fs->writeStream('filename.ext', $stream);
To update file
Yii::$app->fs->update('filename.ext', 'contents');
To update file using stream contents
$stream = fopen('/path/to/somefile.ext', 'r+');
Yii::$app->fs->updateStream('filename.ext', $stream);
To write or update file
Yii::$app->fs->put('filename.ext', 'contents');
To write or update file using stream contents
$stream = fopen('/path/to/somefile.ext', 'r+');
Yii::$app->fs->putStream('filename.ext', $stream);
To read file
$contents = Yii::$app->fs->read('filename.ext');
To retrieve a read-stream
$stream = Yii::$app->fs->readStream('filename.ext');
$contents = stream_get_contents($stream);
fclose($stream);
To check if a file exists
$exists = Yii::$app->fs->has('filename.ext');
To delete file
Yii::$app->fs->delete('filename.ext');
To read and delete file
$contents = Yii::$app->fs->readAndDelete('filename.ext');
To rename file
Yii::$app->fs->rename('filename.ext', 'newname.ext');
还有更多请参考文档吧 https://github.com/creocoder/yii2-flysystem
本文由 ez 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。