vaszloy/yii2-upload-behavior

此软件包最新版本(2.1.2)的许可证信息不可用。

Yii2 ActiveRecord 文件/图片上传行为

安装: 67

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 45

类型:yii2-extension

2.1.2 2019-04-18 09:04 UTC

This package is not auto-updated.

Last update: 2024-09-28 08:25:56 UTC


README

本软件包包含两组类似的行为。第一个行为允许您保持上传的文件不变。第二个行为允许您为上传的图片生成一组缩略图。行为可以多次附加到不同的属性上。

安装

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

运行以下命令:

php composer.phar require --prefer-dist bajadev/yii2-upload-behavior "*"

或者

"bajadev/yii2-upload-behavior": "*"

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

FileUploadBehavior

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

用法

将行为附加到您的模型类

public function behaviors()
{
    return [
        [
            'class' => '\bajadev\upload\FileUploadBehavior',
            'attribute' => 'fileUpload',
            'filePath' => '@webroot/uploads/[[pk]].[[extension]]',
            'fileUrl' => '/uploads/[[pk]].[[extension]]',
        ],
    ];
}

您可以在路径模板配置中使用 Yii 路径别名,例如 @app@webroot@web

您还可以在路径模板中使用额外的占位符。占位符 [[foobar]] 将被替换为适当的占位符值。

可能的路径/URL 占位符

  • [[model]] - 模型类名
  • [[pk]] - 主键的值
  • [[id]] - 与 [[pk]] 相同
  • [[attribute_name]] - 属性值,例如 [[attribute_ownerId]]
  • [[slug_attribute_name]] - 通过 Inflector 生成属性值,例如 [[attribute_ownerId]]
  • [[md5_attribute_name]] - 生成 md5 值,例如 [[attribute_ownerId]]
  • [[id_path]] - id 子目录结构(如果模型主键是 12345,则占位符值将为 1/2/3/4/5
  • [[basename]] - 带扩展名的原始文件名
  • [[filename]] - 不带扩展名的原始文件名
  • [[extension]] - 原始扩展名

添加验证规则

public function rules()
{
    return [
        ['fileUpload', 'file'],   
    ];
}

设置合适的表单 enctype

$form = \yii\bootstrap\ActiveForm::begin([
    'enableClientValidation' => false,
    'options' => [
        'enctype' => 'multipart/form-data',
    ],
]);

文件应顺利上传。

您可以使用模型调用获取上传文件的 URL

echo $model->getUploadedFileUrl('fileUpload');

ImageUploadBehavior

ImageUploadBehavior 在文件上传行为的基础上扩展了生成图片缩略图的功能。您可以配置一组不同的缩略图配置来生成。

用法

将行为附加到您的模型类

public function behaviors()
{
    return [
        [
             'class' => '\bajadev\upload\ImageUploadBehavior',
             'attribute' => 'imageUpload',
             'thumbs' => [
                 'thumb' => ['width' => 400, 'height' => 300, 'crop' => false, 'quality' => 80],
             ],
             'deleteOriginalFile' => true,
             'rotateImageByExif' => true,
             'filePath' => '@webroot/images/[[pk]].[[extension]]',
             'fileUrl' => '@web/images/[[pk]].[[extension]]',
             'thumbPath' => '@webroot/images/[[profile]]_[[pk]].[[extension]]',
             'thumbUrl' => '@web/images/[[profile]]_[[pk]].[[extension]]',
        ],
    ];
}

您可以在路径模板配置中使用 Yii 路径别名,例如 @app@webroot@web

您还可以在路径模板中使用额外的占位符。占位符 [[foobar]] 将被替换为适当的占位符值。

可能的路径/URL 占位符

  • [[model]] - 模型类名
  • [[pk]] - 主键的值
  • [[id]] - 与 [[pk]] 相同
  • [[attribute_name]] - 属性值,例如 [[attribute_ownerId]]
  • [[slug_attribute_name]] - 通过 Inflector 生成属性值,例如 [[attribute_ownerId]]
  • [[md5_attribute_name]] - 生成 md5 值,例如 [[attribute_ownerId]]
  • [[id_path]] - id 子目录结构(如果模型主键是 12345,则占位符值将为 1/2/3/4/5/
  • [[basename]] - 带扩展名的原始文件名
  • [[filename]] - 不带扩展名的原始文件名
  • [[extension]] - 原始扩展名
  • [[profile]] - 缩略图配置名称,用于缩略图路径/URL

添加验证规则

public function rules()
{
    return [
        ['imageUpload', 'file', 'extensions' => 'jpeg, gif, png'],   
    ];
}

设置合适的表单 enctype

$form = \yii\bootstrap\ActiveForm::begin([
    'options' => [
        'enctype' => 'multipart/form-data',
    ],
]);

文件应顺利上传。

您可以使用模型调用获取上传图片的 URL

echo $model->getImageFileUrl('imageUpload');

您可以为没有上传图片的模型指定默认图片

echo $model->getImageFileUrl('imageUpload', '/images/empty.jpg');

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

echo $model->getThumbFileUrl('imageUpload', 'thumb');

您可以为没有上传图片的模型指定默认缩略图图片

echo $model->getThumbFileUrl('imageUpload', 'thumb', '/images/thumb_empty.jpg');

许可证

MIT