Yii2如何使用MinIO做为对象存储

对象存储 MinIO Flysystem yii2 Yii2 · ez · 于 4年前 发布 · 2295 次阅读

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

安装MinIO

详细步骤参考:CentOS 7中使用Docker运行MinIO作为对象存储服务器

安装好以后,我们要使用亚马逊S3云存储服务接口来调用这个服务。

不得不说的是关于文件系统php有个一统天下的神器 Flysystem,yii2也有其相应的扩展可以用。

安装 Flysystem Extension for Yii 2

我们用的是creocoder/yii2-flysystem

还是composer 安装,安装慢的时候别忘了改composer国内源

composer require creocoder/yii2-flysystem

安装 AWS S3 filesystem 的扩展

还得装这么个扩展

composer require league/flysystem-aws-s3-v3

配置Yii项目

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 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册