我无法在CakePHP中将文件从一个文件夹上传到另一个文件夹。这是我的代码。
首先,我加载了插件,并在ProductsTable.php
中添加了此代码
$this->addBehavior('Xety/Cake3Upload.Upload', [
'fields' => [
'productimg_file' => [
'path' => 'uploads/avatar/:id/:md5'
]
]
]);
然后我添加了add.cpt
<?php
echo $this->Form->input('productcode');
echo $this->Form->input('productname');
echo $this->Form->input('productprice');
echo $this->Form->input('quantity');
echo $this->Form->input('productdesc');
echo $this->Form->input('productimg_file',['type' => 'file']);
?>
文件仍然不会移动到webroot
目录。
public function add() {
$product = $this->Products->newEntity();
if ($this->request->is('post')) {
$product = $this->Products->patchEntity($product, $this->request->data);
if ($this->Products->save($product)) {
$this->Flash->success(__('The product has been saved.'));
return $this->redirect(['action' => 'index']);
} else {
$this->Flash->error(__('The product could not be saved. Please, try again.'));
}
}
$this->set(compact('product'));
$this->set('_serialize', ['product']);
}
3条答案
按热度按时间gev0vcfq1#
我已经成功地通过该插件上传。一开始,我是你的错误,但我纠正了它。我的脚步...
Within:CakePHP 3.2 Red Velvet
1.下载源码复制XuadBehavior.php到 /src/Model/Behavior
1.复制
"xety/cake3-upload": "1.*"
(带双引号“”)粘贴到/bootstrap. php中的“require-dev”:{...},例如:
1.打开终端(窗口命令)类型:
composer 更新
注意:如果你没有 composer ,谷歌和安装它。
我知道1号和2号是一样的,但我确定。
1.配置为插件手册。下面的配置位于Model/Table/model_nameTable.php而不是Model/Entity/model.php
例如:
1.设置更新URL,
“/img/folder_name/:id/:md5”
例如:
1.确保视图中的FORM定义为:
$this->Form->create($user,“enctype”=>“multipart/form-data”])
输入文件名正确:
例如:
不需要从控制器调用任何东西,当你提交表单时,它会自动上传。
祝你好运!
camsedfj2#
你的观点似乎不完整。没有
$this->Form->create()
。plugin instructions提到你必须设置你的表单来接受文件:
默认情况下,插件存储在
/app/webroot/img/
下。确保此文件夹可由Apache或Nginx写入。ffscu2ro3#
_file是一个默认的后缀,您将只在.ctp文件中使用。不是模特。在模型中改变你的行为。希望这会有帮助。