mamadali/yii2-s3-storage

一个为yii2提供将文件存储在S3存储上的包

1.0.0 2024-09-08 05:58 UTC

This package is auto-updated.

Last update: 2024-09-08 06:04:11 UTC


README

Yii2 S3 Storage是一个Yii2组件,提供了一种简单的方法来存储文件在Amazon S3上。

Latest Stable Version Total Downloads

安装

安装此扩展的首选方式是通过composer

运行以下命令之一

composer require mamadali/yii2-s3-storage

或添加

"mamadali/yii2-s3-storage": "*"

到您的composer.json文件的require部分,并运行composer update

然后运行迁移

php yii migrate/up --migrationPath=@vendor/mamadali/yii2-s3-storage/src/migrations

基本用法

将s3组件添加到配置文件的components部分

    'components' => [
        ...
        's3storage' => [
            'class' => 'mamadali\S3Storage\components\S3Storage',
            'key' => // your access key
            'secret' => // your secret key
            'endpoint' => // your endpoint
            'default_bucket_name' => // your bucket name
            'bucket_domain' => // Optional: your bucket domain
        ],
        ...
    ];

将行为添加到您的模型中

    public function behaviors()
    {
        return [
            ...
            [
                'class' => StorageUploadBehavior::class,
                'attributes' => ['file'],
                'scenarios' => [self::SCENARIO_UPLOAD],
                'path' => 'path/model_class/{id}'
            ],
            ...
        ];
    }

然后在表单中添加文件输入,并在控制器中保存模型

    <?= $form->field($model, 'file')->fileInput() ?>
    $model->save();

获取存储的用法

S3Storage::formatUsageSpace(Yii::$app->s3storage->getTotalUsage());
// return "1 MB"
S3Storage::formatUsageSpace(Yii::$app->s3storage->getUsageByModelClass(Model::class));
Yii::$app->s3storage->getUsageSeperatedByModelClass();
/**
* return [
 *     [
 *          'model_class' => 'common\models\Model',
 *          'size' => 1048576 // bytes
 *     ],
 * ]
 */