2012-11-22 60 views
0

我一直在試圖讓這個工作幾個小時,無數谷歌搜索沒有產生任何幫助。CakePhp上傳驗證

我想知道是否有一種方法來驗證表單fileInput內部的變量。所以就像在「上傳」表單中我想確保上傳[名稱]不是空的。我可以用Cakephp的模型驗證來做到這一點嗎?

+0

你看着用蛋糕文件上傳插件? Meio上傳很簡單,很好。 Cakephp媒體插件顯然非常好,但工作起來很複雜。 –

回答

5

Cakephp無法驗證文件輸入字段。

您可以通過自定義的驗證規則類似例子

下面做它的視圖文件

<?php 
    echo $this->Form->file('image'); 
    echo $this->Form->error('image'); 
?> 

對於模型文件

<?php 
    public $validate = array(
     'image' => array(
      'rule' => array('chkImageExtension'), 
      'message' => 'Please Upload Valid Image.' 
     ) 
    ); 



    public function chkImageExtension($data) { 
     $return = true; 

     if($data['image']['name'] != ''){ 
      $fileData = pathinfo($data['image']['name']); 
      $ext  = $fileData['extension']; 
      $allowExtension = array('gif', 'jpeg', 'png', 'jpg'); 

      if(in_array($ext, $allowExtension)) { 
       $return = true; 
      } else { 
       $return = false; 
      } 
     } else { 
      $return = false; 
     } 

     return $return; 
    } 
?> 
0

@Sunman辛格的答案是不正確的了。

static Validation::extension(mixed $check, array $extensions = array('gif', 'jpeg', 'png', 'jpg')) 

此規則檢查像.jpg.png有效的文件擴展名。允許 通過以array的形式傳遞給他們多個擴展名。

public $validate = array(
    'image' => array(
    'rule' => array(
      'extension', 
      array('gif', 'jpeg', 'png', 'jpg') 
    ), 
     'message' => 'Please supply a valid image.' 
) 
); 

static Validation::fileSize($check, $operator = null, $size = null) 

該規則允許你檢查的filesizes。您可以使用$operator至 決定要使用的比較類型。此處也支持comparison()支持的所有運營商 。

public $validate = array(
    'image' => array(
     'rule' => array('fileSize', '<=', '1MB'), 
     'message' => 'Image must be less than 1MB' 
) 
); 

查看下列參考文獻的鏈接:這種方法將 自動從$_FILEStmp_name鑰匙讀取如果$checkarray和包含該鍵處理數組值。 Altough,我建議書面方式你自己的功能更安全,但這些當然可以節省您的時間

http://book.cakephp.org/2.0/en/models/data-validation.html#Validation::extension