xety / cake3-upload
Cake3 文件上传插件。
v1.2
2016-01-21 10:19 UTC
Requires
- php: >=5.4.16
- cakephp/orm: 3.*
Requires (Dev)
- cakephp/cakephp: ~3.0
- cakephp/cakephp-codesniffer: dev-master
- phpunit/phpunit: *
This package is auto-updated.
Last update: 2024-09-04 23:16:42 UTC
README
一个用于上传文件的 Cake3 插件。
要求
- CakePHP 3.X
安装
运行: composer require xety/cake3-upload:1.*
或将其添加到你的 composer.json
"require": { "xety/cake3-upload": "1.*" },
使用方法
在你的 config/bootstrap.php
中添加
Plugin::load('Xety/Cake3Upload');
在你的模型 initialize()
中
$this->addBehavior('Xety/Cake3Upload.Upload', [ 'fields' => [ 'avatar' => [ 'path' => 'upload/avatar/:id/:md5' ] ] ] );
设置你的表单以接受文件
$this->Form->create($foo, ['type'=>'file']); // .. or .. $this->Form->create($foo, ['enctype' => 'multipart/form-data']);
要创建一个用于上传文件的输入框,只需使用此规则: fieldName_file。例如
<?= $this->Form->input('avatar_file', ['type' => 'file']) ?>
如果在你指定的实体中,请将带后缀的字段(例如 avatar_file
)添加到 $_accessible
数组中
protected $_accessible = [ # .. 'avatar_field' => true, # .. ];
标识符
- :id 实体的 Id(例如,如果你在用户表中使用它,可以是用户 Id)
- :md5 一个随机且唯一的32位字符标识符。例如: bbebb3c3c5e76a46c3dca92c9395ee65
- :y 基于当前年份。例如: 2014
- :m 基于当前月份。例如: 09
配置
-
后缀
默认:
_file
你可以将后缀 _file 改为你自己的后缀
$this->addBehavior('Upload', [ 'fields' => [ 'avatar' => [ 'path' => 'upload/avatar/:id/:md5' ] ], 'suffix' => '_anotherName' ] ); <?= $this->Form->input('avatar_anotherName', ['type' => 'file']) ?>
-
覆盖
默认:
true
此选项允许你定义是否必须删除和/或覆盖旧文件。 如果选项设置为 false,则如果旧文件名与新文件名相同,则不会上传文件。 如果你想让用户只上传一张图片,这可能很有用。
$this->addBehavior('Upload', [ 'fields' => [ 'avatar' => [ 'path' => 'upload/avatar/:id/:md5', 'overwrite' => false ] ] ] );
-
默认文件
默认:
false
此选项允许你为字段定义一个默认文件。如果你为所有新用户定义了一个默认头像并且不想删除它(例如:在你的数据库中,将默认值设置为头像设置为: "../img/default_avatar.png"),这可能很有用。 只有在覆盖设置为 true 时才有效。
$this->addBehavior('Upload', [ 'fields' => [ 'avatar' => [ 'path' => 'upload/avatar/:id/:md5', 'overwrite' => true, 'defaultFile' => 'default_avatar.png' ] ] ] );
-
前缀
默认:
false
此选项允许你为上传路径定义一个前缀。如果你不想使用 img/ 目录进行上传,这可能很有用。
$this->addBehavior('Upload', [ 'fields' => [ 'avatar' => [ 'path' => 'upload/avatar/:id/:md5', 'prefix' => '../' ] ] ] );
示例
如果你在 webroot 目录的根目录中使用了自定义目录,并使用
HtmlHelper
来显示你的图片,你可以设置一个前缀,如下所示/** * The path will look like this : * webroot/upload/avatar * * In the database, the record will look like that : * ../upload/avatar/1/bbebb3c3c5e76a46c3dca92c9395ee65.png */ $this->addBehavior('Upload', [ 'fields' => [ 'avatar' => [ 'path' => 'upload/avatar/:id/:md5', 'prefix' => '../' ] ] ] ); // In a view, with the Html Helper: <?= $this->Html->image($User->avatar) ?> // Output : <img src="/img/../upload/avatar/1/bbebb3c3c5e76a46c3dca92c9395ee65.png" alt="">