如何在 cakephp 的数据库中插入图像名称?

Posted

技术标签:

【中文标题】如何在 cakephp 的数据库中插入图像名称?【英文标题】:How can I insert image name in database in cakephp? 【发布时间】:2014-05-01 12:53:35 【问题描述】:

到目前为止我已经实现如下。

我面临的问题是我无法更新文件名,因此出现错误,导致文件无法上传。

控制器:

public function add() 
    if (!empty($this->data))   
        if (!empty($this->data['Note']))  
            $filename = basename($this->data['Note']['note_image']['name']); 
            move_uploaded_file($this->data['Note']['note_image']['tmp_name'],WWW_ROOT . 'files' . DS . $filename); 

            if($this->Note->save($this->data['Note']))  
                $this->Session->setFlash('The note has been saved');
                $this->redirect(array('action' => 'add'));
                       
          
    

查看:

<?php
echo $this->Form->create('Note', array('type' => 'file'));
echo $this->Form->input('note_title');
echo $this->Form->input('note_desc');
echo $this->Form->input('note_image', array('type' => 'file'));
echo $this->Form->end('Add');
?>

我认为保存功能不会存在。有什么办法吗。

【问题讨论】:

“我收到一个错误” - 错误应该在问题中。还请用您正在使用的 CakePHP 版本标记您的问题(看起来像 2.x) 【参考方案1】:

控制器代码应该是这样的:

public function add() 
        if ($this->request->is('post') || $this->request->is('put'))   
            $file = $this->request->data['Note']['note_image']; 
            if($file['error'] === UPLOAD_ERR_OK)
            
                $filename = $file['name']; 
                if(move_uploaded_file($file['tmp_name'],WWW_ROOT . 'files' . DS . $filename))
                
                    $this->request->data['Note']['note_image'] = $filename;
                    if($this->Note->save($this->request->data))  
                        $this->Session->setFlash('The note has been saved');
                        $this->redirect(array('action' => 'add'));
                    
                
            
            else
            
                $this->Session->setFlash('ERROR');
                $this->redirect(array('action' => 'add'));
                          
          
    

视图应该是这样的:

<?php
echo $this->Session->flash();
echo $this->Form->create('Note', array('enctype'=>'multipart/form-data'));
echo $this->Form->input('note_title');
echo $this->Form->input('note_desc');
echo $this->Form->input('note_image', array('type' => 'file'));
echo $this->Form->end('Add');
?>

【讨论】:

亲爱的,我认为您的帖子会很有用,但我收到一条错误消息:'致命错误:在 E:\wamp\www\ 中的非对象上调用成员函数 is() cake\app\controllers\notes_controller.php 在第 34 行'。你有没有其他的解决办法。但我还是会感谢你的尝试。 试试这个:if ($this->request->is('post') 这是 cakephp 2.x 版本

以上是关于如何在 cakephp 的数据库中插入图像名称?的主要内容,如果未能解决你的问题,请参考以下文章

Cakephp 2.5找不到Oracle序列

在Cakephp 3.6中如何获取图像的大小和类型以通过表单发送?

CakePHP - 如何在保存时将关联记录添加到模型中?

将图像插入 Android 图库时如何更改图像名称?

如何在 cakephp4 中使用 Admad cakephp-glide 删除 Glide 缓存?

cakephp3 如何检查实体是不是是新插入的 afterSave 回调?