使用 xety/cake3-upload 插件时文件上传失败
File fails to upload when using xety/cake3-upload plugin
我无法在 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 函数添加()
{
$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']);
}
您的观点似乎不完整。没有$this->Form->create()
.
plugin instructions 提到您必须将表单设置为接受文件:
$this->Form->create($foo, ['type'=>'file']);
// .. or ..
$this->Form->create($foo, ['enctype' => 'multipart/form-data']);
上传内容默认存储在 /app/webroot/img/
下。请确保此文件夹可由 Apache 或 Nginx 写入。
我已经通过那个插件成功上传了。一开始,我是你的错误,但我修正了它。这是我的步骤...
内含:CakePHP 3.2 Red Velvet
下载源码
复制 UploadBehavior.php
至 /src/Model/Behavior
复制"xety/cake3-upload": "1.*"
(带双引号“”)粘贴到/config/bootstrap。php中的"require-dev":{...} ,
例如:
"require-dev": {
"psy/psysh": "@stable",
"cakephp/debug_kit": "~3.2",
"cakephp/bake": "~1.1",
"xety/cake3-upload": "1.*"
},
打开终端(window cmd)输入:
作曲家更新
注意:如果您没有 composer,google 并安装它。
=> 我知道 1 号和 2 号是一样的,但我肯定做到了。
- 配置为插件手册。
下面的配置是 Model/Table/model_nameTable.php 不是 Model/Entity/model.php
例如:
$this->addBehavior('Xety/Cake3Upload.Upload', [
'fields' => [
'avatar' => [
'path' => '/img/avatars/:id/:md5'
]
]
]
);
设置更新 URL 为
'/img/folder_name/:id/:md5'
例如:
'/img/avatars/:id/:md5'
确保视图中的 FORM 定义为:
$this->Form->create($user, ['enctype' => 'multipart/form-data'])
并且输入文件是正确的名称:
$this->Form->file('fieldname_file');
例如:
$this->Form->file('avatar_file');
不需要从控制器调用任何东西,当你提交表单时,它会自动上传。
祝你好运!
_file 是默认后缀,您将仅在 .ctp 文件中使用它。不在模型中。
改变你在模型中的行为。希望这会有所帮助。
$this->addBehavior('Xety/Cake3Upload.Upload', [
'fields' => [
'productimg' => [
'path' => 'uploads/avatar/:id/:md5'
]
]
]);
我无法在 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 函数添加() {
$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']);
}
您的观点似乎不完整。没有$this->Form->create()
.
plugin instructions 提到您必须将表单设置为接受文件:
$this->Form->create($foo, ['type'=>'file']);
// .. or ..
$this->Form->create($foo, ['enctype' => 'multipart/form-data']);
上传内容默认存储在 /app/webroot/img/
下。请确保此文件夹可由 Apache 或 Nginx 写入。
我已经通过那个插件成功上传了。一开始,我是你的错误,但我修正了它。这是我的步骤...
内含:CakePHP 3.2 Red Velvet
下载源码 复制 UploadBehavior.php 至 /src/Model/Behavior
复制
"xety/cake3-upload": "1.*"
(带双引号“”)粘贴到/config/bootstrap。php中的"require-dev":{...} ,
例如:
"require-dev": {
"psy/psysh": "@stable",
"cakephp/debug_kit": "~3.2",
"cakephp/bake": "~1.1",
"xety/cake3-upload": "1.*"
},
打开终端(window cmd)输入:
作曲家更新
注意:如果您没有 composer,google 并安装它。
=> 我知道 1 号和 2 号是一样的,但我肯定做到了。
- 配置为插件手册。 下面的配置是 Model/Table/model_nameTable.php 不是 Model/Entity/model.php
例如:
$this->addBehavior('Xety/Cake3Upload.Upload', [
'fields' => [
'avatar' => [
'path' => '/img/avatars/:id/:md5'
]
]
]
);
设置更新 URL 为
'/img/folder_name/:id/:md5'
例如:
'/img/avatars/:id/:md5'
确保视图中的 FORM 定义为:
$this->Form->create($user, ['enctype' => 'multipart/form-data'])
并且输入文件是正确的名称:
$this->Form->file('fieldname_file');
例如:
$this->Form->file('avatar_file');
不需要从控制器调用任何东西,当你提交表单时,它会自动上传。
祝你好运!
_file 是默认后缀,您将仅在 .ctp 文件中使用它。不在模型中。 改变你在模型中的行为。希望这会有所帮助。
$this->addBehavior('Xety/Cake3Upload.Upload', [
'fields' => [
'productimg' => [
'path' => 'uploads/avatar/:id/:md5'
]
]
]);