cakephp 使用xety/cake 3-upload插件时文件上传失败

bgibtngc  于 2023-10-20  发布在  PHP
关注(0)|答案(3)|浏览(136)

我无法在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']);
}
gev0vcfq

gev0vcfq1#

我已经成功地通过该插件上传。一开始,我是你的错误,但我纠正了它。我的脚步...
Within:CakePHP 3.2 Red Velvet
1.下载源码复制XuadBehavior.php/src/Model/Behavior
1.复制"xety/cake3-upload": "1.*"(带双引号“”)粘贴到/bootstrap. php中的“require-dev”:{...},
例如:

"require-dev": {
        "psy/psysh": "@stable",
        "cakephp/debug_kit": "~3.2",
        "cakephp/bake": "~1.1",
        "xety/cake3-upload": "1.*"
    },

1.打开终端(窗口命令)类型:
composer 更新
注意:如果你没有 composer ,谷歌和安装它。
我知道1号和2号是一样的,但我确定。
1.配置为插件手册。下面的配置位于Model/Table/model_nameTable.php而不是Model/Entity/model.php
例如:

$this->addBehavior('Xety/Cake3Upload.Upload', [
        'fields' => [
            'avatar' => [
                'path' => '/img/avatars/:id/:md5'
                    ]
                ]
            ]
        );

1.设置更新URL,
“/img/folder_name/:id/:md5”
例如:

'/img/avatars/:id/:md5'

1.确保视图中的FORM定义为:
$this->Form->create($user,“enctype”=>“multipart/form-data”])
输入文件名正确:

$this->Form->file('fieldname_file');

例如:

$this->Form->file('avatar_file');

不需要从控制器调用任何东西,当你提交表单时,它会自动上传。
祝你好运!

camsedfj

camsedfj2#

你的观点似乎不完整。没有$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写入。

ffscu2ro

ffscu2ro3#

_file是一个默认的后缀,您将只在.ctp文件中使用。不是模特。在模型中改变你的行为。希望这会有帮助。

$this->addBehavior('Xety/Cake3Upload.Upload', [
    'fields' => [
        'productimg' => [
            'path' => 'uploads/avatar/:id/:md5'
        ]
    ]
]);

相关问题