大侠实验室/yii2-uploader-behavior

Yii2 Uploader Behavior 是一个用于 Active Record 的上传行为,它自动处理所有标记有 `file` 或 `image` 验证规则的属性文件上传。同时,它还配置了文件名重命名和存储在数据库作为属性值的方式。

1.0.3 2023-07-09 23:23 UTC

This package is auto-updated.

Last update: 2024-09-10 02:00:43 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

自动处理所有标记有 fileimage 验证规则的属性文件上传。它还配置了文件名重命名和存储在数据库作为属性值的方式。

安装

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

运行以下命令:

php composer.phar require --prefer-dist daxslab/yii2-uploader-behavior "*"

或者

"daxslab/yii2-uploader-behavior": "*"

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

使用方法

扩展安装完成后,您可以通过在模型中使用以下方式来使用它:

use daxslab/behaviors/UploaderBehavior;

public function behaviors() {
    return [
        UploaderBehavior::className()
    ];
}

这是最简单的方法。它将查找所有具有 fileimage 验证规则的属性。

public function rules()
{
    return [
        [['name'], 'required'],
        [['name'], 'string', 'max' => 256],
        [['image'], 'image', 'skipOnEmpty' => true],
    ];
}

并且更新表单以指定图像属性的文件输入

$form->field($model, 'image')->fileInput();

为了更精确的控制,您可以使用 attributes 选项来指定要控制的属性,如下所示:

use daxslab/behaviors/UploaderBehavior;

public function behaviors() {
    return [
        [
            'class' => UploaderBehavior::className(),
            'attributes' => ['avatar'] // or you can use the string format as in 'attributes' => 'avatar'
        ]
    ];
}

默认情况下,上传的文件名是随机的,但如果你想配置它,你可以设置 renamer 选项

use daxslab/behaviors/UploaderBehavior;

public function behaviors() {
    return [
        [
            'class' => UploaderBehavior::className(),
            'attributes' => ['avatar'] // or you can use the string format as in 'attributes' => 'avatar'
            'renamer' => UploaderBehavior::RENAME_MD5 //will encode the filename with md5()
        ]
    ];
}

你也可以指定一个自定义函数来重命名文件名

use daxslab/behaviors/UploaderBehavior;

public function behaviors() {
    return [
        [
            'class' => UploaderBehavior::className(),
            'attributes' => ['avatar'] // or you can use the string format as in 'attributes' => 'avatar'
            'renamer' => function($name, $owner){
                return strtoupper($name); //will turn the filename into uppercase
            }
        ]
    ];
}

Daxslab 制作。