xety/cake3-upload

Cake3 文件上传插件。

安装次数: 23,844

依赖: 1

建议者: 0

安全: 0

星标: 26

关注者: 10

分支: 17

开放问题: 7

类型:cakephp-plugin

v1.2 2016-01-21 10:19 UTC

This package is auto-updated.

Last update: 2024-09-04 23:16:42 UTC


README

一个用于上传文件的 Cake3 插件。

Build Status Coverage Status Scrutinizer Latest Stable Version Total Downloads License

要求

  • 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="">

贡献

遵循此指南进行贡献