使用CakePHP 3.2上的cakephp-upload插件,图像不会保存到photo_dir文件夹中

时间:2016-07-13 20:11:36

标签: php cakephp cakephp-3.0 image-uploading

我正在使用cakephp-upload plugin,我设法将图片上传到我的服务器:

WorkersTable:

public function initialize(array $config)
{
    parent::initialize($config);

    $this->table('workers');
    $this->displayField('id');
    $this->primaryKey('id');

    $this->addBehavior('Josegonzalez/Upload.Upload', [
        'avatar' => [
            'fields' => [
                'dir' => 'photo_dir'
            ]
        ]
    ]);
}

view.ctp:

echo $this->Form->create($newWorker, ['type' => 'file']);
echo $this->Form->input('avatar', ['type' => 'file']);
echo $this->Form->input('photo_dir', ['type' => 'hidden']);

现在上传了头像图片,但它们没有放入photo_dir子目录。

enter image description here

我错过了什么?它在我的CakePHP 2.8.x应用程序中没有任何问题。

3 个答案:

答案 0 :(得分:1)

不应该是:

$this->addBehavior('Josegonzalez/Upload.Upload', [
     'avatar' => [
         'fields' => [
             'dir' => 'avatar_dir'
         ]
     ]
 ]);

echo $this->Form->input('avatar_dir', ['type' => 'hidden']);

答案 1 :(得分:1)

如果你想使用更好的选项,你可以使用下面的插件,它有更好的选项来上传文件,而不是Josegonzalez/Upload.Upload插件。

我在我的项目中使用了以下一个。

Utils Plugin for Cake 3.x

此插件的链接:https://github.com/cakemanager/cakephp-utils

文档:http://cakemanager.org/docs/utils/1.0/behaviors/uploadable/

这是配置:

$this->addBehavior('Utils.Uploadable', [
            'image' => [
                'path' => '{ROOT}{DS}{WEBROOT}{DS}uploads{DS}{field}{DS}',
                'fileName' => md5(rand(1000, 5000000)) . '.{extension}',
                'removeFileOnDelete' => true,
                'removeFileOnUpdate' => FALSE
            ],
        ]);

您可以在此自定义它。如果您对此有任何疑问,请与我们联系。

答案 2 :(得分:1)

这个插件的作者。

fields.dir属性未说明子目录应该是什么。它是对数据库表中列的引用,我们应该保存director保存文件的位置。

如果要更改在磁盘上保存文件的位置,则应使用path选项。以下是我使用photo_dir子目录的示例:

$this->addBehavior('Josegonzalez/Upload.Upload', [
    'avatar' => [
        'path' => 'webroot{DS}files{DS}{model}{DS}{field}{DS}photo_dir{DS}'
    ]
]);

path选项的默认值为webroot{DS}files{DS}{model}{DS}{field}{DS}