繁体   English   中英

为什么这个上传文件代码在CakePHP中不起作用

[英]Why is this upload file code not working in CakePHP

我在CakePHP 2.1中上传文件时遇到问题。 事实上,我总是有错误:

Column not found: 1054 Unknown column 'Array' in 'field list'.

对于视图:

<?php echo $this->Form->create('Ecole',array('enctype' => 'multipart/form-data')); ?>
<?php echo $this->Form->input('Ecole.logo_ecole', array('type'=>'file','class'=>'','label'=>'')); ?>

当我删除array('enctype' => 'multipart/form-data')我没有错误,但上传也不起作用。

对于控制器:

if(!empty($this->data))
{    
  debug($this->data);
  $ext  = 'jpg';

  // Save success
  if($this->Ecole->save($this->data))
  {      
    // Destination folder, new filename and destination path
    $dest_folder = IMAGES . DS . 'galleries' . DS . $this->Ecole->id;
    $new_filename = $this->Ecole->id. '.' .$ext;
    $dest_path = $dest_folder . DS . $new_filename;

    // Check if destination folder exists and create if it doesn't
    if(!is_dir($dest_folder))
    {
      mkdir($dest_folder, 0755, true);
    }

    // We move the picture and rename it with his id
    if(move_uploaded_file($this->data['Ecole']['logo_ecole']['tmp_name'], $dest_path))
    {
      // Show success flash message
      $this->Session->setFlash(__('Picture successfully added !', true), 'default', array('class' => 'success'));
        echo  "<script>  parent.location.reload(true); parent.jQuery.fancybox.close(); </script>";
    }
    // Move failed
    else
    {
      // Delete picture
      //$this->Ecole->delete($this->Ecole->id);

      // Show error flash message
      $this->Session->setFlash(__('Error occurred while adding picture !', true), 'default', array('class' => 'error'));
    }
  }
  // Save failed
  else
  {      
    // Show error flash message
    $this->Session->setFlash(__('Error occurred while adding picture !', true), 'default', array('class' => 'error'));
  }
}

任何人都可以解释我做错了什么以及如何正确做到这一点?

要执行multipart / form-data,您必须使用帮助程序以这种方式指定它

 <?php echo $this->Form->create('Ecole', array('type' => 'file')); ?>

类型可以是'post', 'get', 'file', 'put' or 'delete' 请参阅FormHelper文档中的“ Options for create ”部分!

这可能是因为你在上传文件时试图保存阵列蛋糕( $this->data['Ecole']['logo_ecole']是一个数组)。 您是否只想将文件名保存到数据库中?

我修改了你的代码请看一下

请不要在表格中删除array('enctype' => 'multipart/form-data')

<?php

if(!empty($this->data))
{    
    debug($this->data);
    $ext  = 'jpg';


      // Destination folder, new filename and destination path
    $dest_folder = IMAGES . DS . 'galleries' . DS . $this->Ecole->id;
    $new_filename = $this->Ecole->id. '.' .$ext;
    $dest_path = $dest_folder . DS . $new_filename;

    // Check if destination folder exists and create if it doesn't
    if(!is_dir($dest_folder))
    {
      mkdir($dest_folder, 0755, true);
    }

    $image='';

    // We move the picture and rename it with his id
    if(move_uploaded_file($this->data['Ecole']['logo_ecole']['tmp_name'], $dest_path))
    {
        $image = basename($this->data['Ecole']['logo_ecole']['name'])

        // Show success flash message
        $this->Session->setFlash(__('Picture successfully added !', true), 'default', array('class' => 'success'));
        echo  "<script>  parent.location.reload(true); parent.jQuery.fancybox.close(); </script>";

    }else
    {
      // Delete picture
      //$this->Ecole->delete($this->Ecole->id);

      // Show error flash message
      $this->Session->setFlash(__('Error occurred while adding picture !', true), 'default', array('class' => 'error'));
    }   


    $this->data['Ecole']['logo_ecole'] = $image;

      // Save success
      if(!$this->Ecole->save($this->data))
      {      
        // Show error flash message
        $this->Session->setFlash(__('Error occurred while adding picture !', true), 'default', array('class' => 'error'));
      }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM