valiant / yii2-upload-behavior
为 ActiveRecord 提供的 Yii2 文件/图片上传行为
Requires
- php: >=5.4.0
- masterexploder/phpthumb: *
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2020-08-21 20:00:47 UTC
README
这是从 Yii Dream Team (http://yiidreamteam.com) 的 yii-dream-team/yii2-upload-behavior 分支出来的。
为 ActiveRecord 提供的 Yii2 文件/图片上传行为
此包包含两个类似的行为。第一个允许您保持上传的文件不变。第二个允许您为上传的图片生成一组缩略图。可以为不同的属性多次附加行为。
安装
通过 composer 安装此扩展是首选方式。
运行
php composer.phar require --prefer-dist valiant/yii2-upload-behavior "*"
或在您的 composer.json 文件的 require 部分添加
"valiant/yii2-upload-behavior": "*"
到
FileUploadBehavior
此行为允许您通过 ActiveRecord 行为添加文件上传逻辑。
使用方法
将行为附加到您的模型类
public function behaviors()
{
return [
[
'class' => '\valiant\behaviors\FileUploadBehavior',
'attribute' => 'attachment',
'filePath' => '@webroot/uploads/[[pk]].[[extension]]',
'fileUrl' => '/uploads/[[pk]].[[extension]]',
],
];
}
您可以在路径模板配置中使用 Yii 路径别名,如 @app
、@webroot
、@web
。
您还可以在路径模板中使用额外的占位符。占位符 [[foobar]]
将被替换为适当的占位符值。
可能的路径/URL 占位符
[[model]]
- 模型类名[[pk]]
- 主键的值[[id]]
- 与[[pk]]
相同[[extension]]
- 原始扩展名[[attribute]]
- 属性名[[id_path]]
- id 子目录结构(如果模型主键是12345
,占位符值将为1/2/3/4/5/0/0/0/0/0
)[[id_hash]]
- 通过 md5 哈希的 id 子目录结构(如果模型主键是12345
,md5 哈希是827ccb0eea8a706c4c34a16891f84e7b
,占位符值将为8/27/ccb0eea8a706c4c34a16891f84e7b
)[[id_hash_piece]]
- id 哈希的十进制片段,将在 0-255 范围内(如果模型主键是12345
,md5 哈希是827ccb0eea8a706c4c34a16891f84e7b
,前两个十六进制数字是82
,转换为十进制并将占位符值设置为130
)[[attribute_name]]
- 属性值,例如[[attribute_ownerId]]
添加验证规则
public function rules()
{
return [
['attachment', 'file'],
];
}
设置适当的表单 enctype
$form = \yii\bootstrap\ActiveForm::begin([
'enableClientValidation' => false,
'options' => [
'enctype' => 'multipart/form-data',
],
]);
文件应成功上传。
您可以使用模型调用获取上传文件的 URL
echo $model->getUploadedFileUrl('attachment');
ImageUploadBehavior
Image upload behavior 扩展了文件上传行为,以生成图片缩略图。您可以为要生成的不同缩略图配置设置配置一系列缩略图配置。
使用方法
将行为附加到您的模型类
public function behaviors()
{
return [
[
'class' => '\valiant\behaviors\ImageUploadBehavior',
'attribute' => 'image',
'thumbs' => [
'thumb' => ['width' => 400, 'height' => 300],
'albumThumb' => ['width' => 200],
'albumLogo' => ['height' => 500],
],
'filePath' => '@webroot/images/[[pk]].[[extension]]',
'fileUrl' => '/images/[[pk]].[[extension]]',
'thumbPath' => '@webroot/images/[[profile]]_[[pk]].[[extension]]',
'thumbUrl' => '/images/[[profile]]_[[pk]].[[extension]]',
],
];
}
您可以在路径模板配置中使用 Yii 路径别名,如 @app
、@webroot
、@web
。
您还可以在路径模板中使用额外的占位符。占位符 [[foobar]]
将被替换为适当的占位符值。
可能的路径/URL 占位符
[[model]]
- 模型类名[[pk]]
- 主键的值[[id]]
- 与[[pk]]
相同[[extension]]
- 原始扩展名[[attribute]]
- 属性名[[id_path]]
- id 子目录结构(如果模型主键是12345
,占位符值将为1/2/3/4/5/0/0/0/0/0
)[[id_hash]]
- 通过 md5 哈希的 id 子目录结构(如果模型主键是12345
,md5 哈希是827ccb0eea8a706c4c34a16891f84e7b
,占位符值将为8/27/ccb0eea8a706c4c34a16891f84e7b
)[[id_hash_piece]]
- id 哈希的十进制片段,将在 0-255 范围内(如果模型主键是12345
,md5 哈希是827ccb0eea8a706c4c34a16891f84e7b
,前两个十六进制数字是82
,转换为十进制并将占位符值设置为130
)[[attribute_name]]
- 属性值,例如[[attribute_ownerId]]
[[profile]]
- 缩略图配置名称,在缩略图路径/URL 中使用它[[width]]
- 缩略图宽度,在缩略图路径/URL 中使用它[[高度]]
- 缩略图高度,在缩略图路径/URL中使用它
添加验证规则
public function rules()
{
return [
['image', 'file', 'extensions' => 'jpg, gif, png'],
];
}
设置适当的表单 enctype
$form = \yii\bootstrap\ActiveForm::begin([
'enableClientValidation' => false,
'options' => [
'enctype' => 'multipart/form-data',
],
]);
文件应成功上传。
您可以使用模型调用来获取上传的图片URL
echo $model->getImageFileUrl('image');
您可以为没有上传图片的模型指定默认图片
echo $model->getImageFileUrl('image', '/images/empty.jpg');
您还可以获取生成的缩略图图片URL
echo $model->getThumbFileUrl('image', 'thumb');
您可以为没有上传图片的模型指定默认缩略图
echo $model->getThumbFileUrl('image', 'thumb', '/images/thumb_empty.jpg');
许可证
MIT