how to upload image in cakephp2.5+ and store it in

2019-10-06 17:55发布

my controller

public function add() {

    $this->helpers = array('TinyMCE.TinyMCE');
    $this->layout = 'adminpanel';
    if ($this->request->is('post')) {
        $this->Tour->create();
        if ($this->Tour->save($this->request->data)) {
            $this->Session->setFlash(__('Your possstt has been saved.'));
            return $this->redirect(array('controller'=>'admin','action' => 'tour'));
        }
        $this->Session->setFlash(__('Unable to add your schedule.'));
    }

my view file

echo $this->Form->create('Tour');
echo $this->Form->input('vartitle',array('class' => 'form-control','label' => 'Tour Title'));
// etc.................
echo $this->Form->input('varbigimg', array('type' => 'file'));

echo $this->Form->end('Save Post',array('class' => 'form-control'));

I already check model because image name are stored in database but I want to use that image. I want to save that image in any folder so help me. I am using new version thanks

So tell me how to store image in webroot folder and just save name in database field varbigimg field. I also want to display it on page too. So please solve my problem thanks

I am new in cakephp thanks

3条回答
beautiful°
2楼-- · 2019-10-06 18:06

You need to move your uploaded file to a folder. Get the file info of your $this->request->data and move to a folder in webroot.

There are many plugins for that. Like: Upload Plugin 2.0

查看更多
Lonely孤独者°
3楼-- · 2019-10-06 18:22

Use following

echo $this->Form->create('Tour',array('autocomplete' => 'off','enctype'=>'multipart/form-data'));

Allows image/video data to be processed.

Inside controller

if ($this->request->is('post')) {

    if(is_uploaded_file($this->request->data['Tour']['varbigimg']['tmp_name']))
    {
        $fileNameFull = $this->request->data['Tour']['varbigimg']['name'];

        $oldFile = '../../app/webroot/img/'.$fileNameFull; 

        move_uploaded_file(
          $this->request->data['Tour']['varbigimg']['tmp_name'],
          $oldFile
        );

        $this->Tour->create();
        $this->request->data['Tour']['varbigimg'] = $fileNameFull;

//HERE you need to specify same for thum

        $this->request->data['Tour']['varthumimg'] = $fileNameFull;

////HERE you need to specify same for thumbfield

        if ($this->Tour->save($this->request->data)) {
            $this->Session->setFlash(__('Your possstt has been saved.'));
            return $this->redirect(array('controller'=>'admin','action' => 'tour'));
        }

    }
}
$this->Session->setFlash(__('Unable to add your schedule.'));

//Update

//Specify input type in your code explicitely here.

echo $this->Form->input('vartitle',array('type'=>'text','class' => 'form-control','label' => 'Tour Title'));
查看更多
冷血范
4楼-- · 2019-10-06 18:22

Man , i get to you the needs to make it simply. First you need access the file in your controller, using $this->data['Tour']['varbigimg']; ok , it's your file. Ok, now you need send this file to webroot, you can use File Class of the cakephp http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html You can move and copy files to webroot using WWW_ROOT constraint, this constant get to you the correct path to webroot folder, if u need send to webroot img use IMAGES constant. Using, Folder/File and cakephp constants it's very easy to make your needs. If you need a more information about this, plz ask me and i create a real example to you. Tnx

查看更多
登录 后发表回答