powerkernel/yii-cloudinary

Yii Cloudinary 组件

dev-master 2018-08-14 19:49 UTC

This package is auto-updated.

Last update: 2024-09-11 01:16:09 UTC


README

此软件包包含用于从 Cloudinary 服务上传和显示文件的组件和行为。

安装

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

运行以下命令之一

php composer.phar require nikosid/yii2-coudinary "dev-master"

或者

"nikosid/yii2-coudinary": "dev-master"

将以下内容添加到你的 composer.json 文件的 require 部分中。

CloudinaryComponent

您需要在应用程序配置中配置 cloudinary 组件。

    'components' => [
        'cloudinary' => [
            'class' => CloudinaryComponent::class,
            'cloud_name' => 'YOUR_CLOUD_NAME',
            'api_key' => 'YOUR_API_KEY',
            'api_secret' => 'YOUR_API_SECRET',
            'cdn_subdomain' => true,//optional
            'useSiteDomain' => false,
        ],
    ],

通过将 $useSiteDomain 设置为 true,您可以将您的域名 URL 代理到 Cloudinary 服务器。默认值为 false。

### 以下为 nginx 配置示例,用于将流量转发到 Cloudinary 服务器 ###

    location /YOUR_CLOUD_NAME/ {
        proxy_pass https://res.cloudinary.com;
        proxy_set_header Host res.cloudinary.com;
    }

CloudinaryBehavior

此行为允许您使用 ActiveRecord 行为添加文件上传逻辑。

用法

将此行为附加到您的模型类

    public function behaviors()
    {
        return [
            'cloudynary' => [
                'class' => CloudinaryBehavior::class,
                'attribute' => 'picture',
                'publicId' => Yii::$app->name . '/articles/main{id}',
                'thumbs' => [
                    'large' => ['secure' => true, 'width' => 848, 'height' => 536, 'crop' => 'fill'],
                    'medium' => ['secure' => true, 'width' => 555, 'height' => 536, 'crop' => 'fill'],
                    'small' => ['secure' => true, 'width' => 130, 'height' => 125, 'crop' => 'fill'],
                ],
            ],
        ];
    }

添加验证规则

    
    //For file upload    
    public function rules()
    {
        return [
            ['picture', 'image', 'extensions' => 'jpg, jpeg, gif, png', 'on' => ['insert', 'update']],   
        ];
    }
    
    //Or for url type field    
    public function rules()
    {
        return [
            ['url_picture', 'url',],   
        ];
    }

用于从本地存储上传文件的视图文件示例

<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'picture')->fileInput() ?>
    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>
<?php ActiveForm::end(); ?>

用于从 URL 上传文件的视图文件示例

<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'url_picture')->textInput() ?>
    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>
<?php ActiveForm::end(); ?>

文件应上传成功。

您还可以获取生成的缩略图图像 URL

    echo $model->getThumb('medium');

两种上传类型

您还可以指定一些属性,并按优先级顺序排列。

    public function behaviors()
    {
        return [
            'cloudynary' => [
                'class' => CloudinaryBehavior::class,
                'attribute' => 'picture,picture_url',
                'publicId' => Yii::$app->name . '/articles/main{id}',
                'thumbs' => [
                    'large' => ['secure' => true, 'width' => 848, 'height' => 536, 'crop' => 'fill'],
                    'medium' => ['secure' => true, 'width' => 555, 'height' => 536, 'crop' => 'fill'],
                    'small' => ['secure' => true, 'width' => 130, 'height' => 125, 'crop' => 'fill'],
                ],
            ],
        ];
    }

这意味着如果用户上传 picture,Cloudinary 会获取它,如果没有,我们还会检查 picture_url 并尝试上传它

许可

MIT

链接