2013-03-24 24 views
0

我嘗試添加一個驗證器,用於從我的Zend表單上傳文件的長度。 我不知道我是否應該在表格本身Zend_File_Transfer_Adapter_Http處理上傳中添加此驗證器。但是,現在我正在嘗試第二件事 - 請參閱下面的代碼。如果要上傳的文件名的長度超過40個字符,我想讓控制器重定向一個錯誤標誌。

$upload即使使用長度爲41個字符的文件名也會生效 - 爲什麼?如何驗證Zend控制器或文件上傳文件的文件名長度

$upload = new Zend_File_Transfer_Adapter_Http(); 

$upload->addValidators(
     array(
      array('validator' => 'StringLength', 'options' => array(
       'min' => 0, 
       'max' => 40)) 
     ) 
); 

if (!$upload->isValid()) { 
    $this->_redirect('/customer/uploadfile/groupid/'.$groupId.'/flag/XXX-TODO-Failure'); 
} 

回答

1

它看起來像你沒有驗證任何與你顯示的代碼。

變化如下引用的文件名如行...

if(!$upload->isValid($filenameToValidate) { 

...}

還記得文件名不是一個職位,但將在$ _FILES超級全局中找到。

+0

這個伎倆!也許我今天太累了。 只需添加兩個: 1)在我的代碼示例中,我沒有指定使用'0'和'40'設置哪個StringLength驗證器屬性,因此最大字符串長度甚至沒有正確設置。我編輯我的示例以明確設置'min'和'max'。 2)我發現我可以用ZFs函數$ upload-> getfilename('doc_path',false)獲取上傳文件名,而不是訪問$ _FILES。我不明白哪種方法會被推薦。 – Daniel 2013-03-28 20:02:46