使用 CakePHP 3.2 上的 cakephp-upload 插件,图像不会保存到 photo_dir 文件夹中
Images are not saved into the photo_dir folder using cakephp-upload plugin on CakePHP 3.2
我正在使用 cakephp-upload plugin 并且我设法将图像上传到我的服务器:
工人表:
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子目录下
我错过了什么?它在我的 CakePHP 2.8.x 应用程序中没有任何问题。
不应该是:
$this->addBehavior('Josegonzalez/Upload.Upload', [
'avatar' => [
'fields' => [
'dir' => 'avatar_dir'
]
]
]);
echo $this->Form->input('avatar_dir', ['type' => 'hidden']);
如果你想使用更好的选项,你可以使用下面的插件,它有更好的上传文件选项,而不是 Josegonzalez/Upload.Upload
插件。
我在我的项目中使用了以下一个。
Utils Plugin for Cake 3.x
Link 对于这个插件: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
],
]);
在这里您可以自定义它。如果您对此有任何疑问,请告诉我。
此处为插件作者。
fields.dir
属性没有说明子目录应该是什么。它是对数据库 table 中的列的引用,我们应该将 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}
。
我正在使用 cakephp-upload plugin 并且我设法将图像上传到我的服务器:
工人表:
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子目录下
我错过了什么?它在我的 CakePHP 2.8.x 应用程序中没有任何问题。
不应该是:
$this->addBehavior('Josegonzalez/Upload.Upload', [
'avatar' => [
'fields' => [
'dir' => 'avatar_dir'
]
]
]);
echo $this->Form->input('avatar_dir', ['type' => 'hidden']);
如果你想使用更好的选项,你可以使用下面的插件,它有更好的上传文件选项,而不是 Josegonzalez/Upload.Upload
插件。
我在我的项目中使用了以下一个。
Utils Plugin for Cake 3.x
Link 对于这个插件: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
],
]);
在这里您可以自定义它。如果您对此有任何疑问,请告诉我。
此处为插件作者。
fields.dir
属性没有说明子目录应该是什么。它是对数据库 table 中的列的引用,我们应该将 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}
。