2014-06-13 42 views
0

,我不知道用圖片上傳,以及兩個消息都出現CakePHP的:錯誤上傳

Notice (8): Undefined index: Photo [APP\Controller\PhotosController.php, line 11] 
Notice (8): Undefined index: uploadImg [APP\Model\Photo.php, line 38] 

我會後我的MVC,我的模型照片:

公共$ NAME =「照片「;

public $validate = array(
     'uploadImg' => array(
       'uploadError' => array(
        'rule' => 'uploadError', 
        'message' => 'Fail.', 
        'allowEmpty' => TRUE, 
       ), 
       'mineType' => array(
        'rule' => array('mineType',array('image/gif','image/png','image/jpg','image/jpeg')), 
        'message' => 'JUST (GIF,PNG e JPG).', 
        'allowEmpty' =>TRUE, 
       ), 
       'fileSize' => array(
         'rule' => array(
          'fileSize', '<=', '1MB' 
         ), 
         'message' => 'Photos < 1MB', 
         'allowEmpty' => TRUE 
        ), 
       'processCoverUpload' => array(
         'rule' => 'processCoverUpload', 
         'message' => 'Cover Image Upload' 
        ), 
      ), 
    ); 

public function processCoverUpload($check = array()){ 
    if(!is_uploaded_file($check['uploadImg']['tmp_name'])){ 
     return FALSE; 
    } 
    if(!move_uploaded_file($check['uploadImg']['tmp_name'], WWW_ROT.'img'.DS.'uploads'.DS.$check['uploadImg']['name'])){ 
     return FALSE; 
    } 
    $this->data[$this->alias]['uploadImg'] = 'uploads'.DS.$check['uploads']['name']; 
     return TRUE; 
} 

我PhotosController:

public function add(){ 
     if($this->request->is('post')){ 
      $this->Photo->create(); 
      $data = $this->request->data['Photo']; 
      $this->Photo->processCoverUpload(); 
      //debug($this->request); 
      if(!$data['uploadImg']['name']){ 
       unset($data['uploadImg']); 
      } 

      if($this->Photo->save($data)){ 
       $this->Session->setFlash(_('Imagem salva'));     
       return $this->redirect(array('controller'=> 'home', 'action' => 'index')); 
      }else{ 
       $this->Session->setFlash(_('Não conseguimos salvar')); 
      } 
     }  
    } 

查看:

<?php print $this->Form->create('Photo', array('action'=>'add', 'type' => 'file')); ?> 
    <fieldset>  
     <legend>Upload</legend> 
     <?php print $this->Form->input('Image:', array('type' => 'file', 'name' => 'uploadImg')); ?>   
    </fieldset> 
     <?php print $this->Form->end(_("Save")); ?> 

我不知道我是對的,但我調用方法 「processCoverUpload()」 這種方式和我沒有通過任何參數,對嗎?

回答

0

您沒有將上傳的數據傳遞給沒有參數的情況下無法訪問的函數。嘗試

$data = $this->request->data['Photo']; 
$this->Photo->processCoverUpload($data); 

$this->Photo->processCoverUpload($this->request->data['Photo']); 
+0

好吧,我這樣做「,但圖像並沒有顯示在文件夾!我的move_upload是正確的? – TMoraes

+0

是的,你的move_uploaded_file看起來是正確的,你可能想知道(WWW_ROT.'img'.DS.'uploads'。 DS。$ check ['uploadImg'] ['name']); die()這個來檢查文件夾是否正確啓動,你可以像這樣設置它:'c:/'.$ check ['uploadImg'] ['name '];然後修復它對於你想要的目錄 – scx

+0

我把die();在我的第一個子句中!is_uploaded_file,我想這就是問題了吧 – TMoraes

0

變化uploadImg到圖像中隨處可見這樣的$數據[ '形象'] [ '名'];並改變$ this-> request-> data ['Photo'] ['Image'];

希望它能工作!