2011-01-25 45 views
3

我注意到一些奇怪的事情,想知道是否有人能站在他們一邊測試我的代碼,讓我知道,如果他們得到同樣的事情越大。文件上傳+哈希給了我一個問題,當尺寸比最大尺寸

我有一個真正簡單的表格(見完整形式的代碼和動作代碼如下),它只有一個文件上傳+哈希隱藏+提交按鈕。文件上傳的最大大小限制設置爲10000000(約9.5MB)。

當我嘗試上傳大於限制的文件時,表單不應該進行驗證,但是我在哈希令牌本身Value is required and can't be empty中收到錯誤。有人可以確認嗎?它看起來像令牌正在被消滅。我猜這可能發生在重定向或其他情況下,但我沒有做任何重定向,除非在背景中發生了一些我沒有注意到的事情。

這裏的表單代碼和我的動作代碼

class Application_Form_TestForm extends Zend_Form 
{ 

    public function init() 
    { 

    $file = new Zend_Form_Element_File('file'); 
    $file->setDestination(APPLICATION_PATH); 
    $file->addValidator('Size', false, 10000000); 
    $file->setMaxFileSize(10000000); 
    $this->addElement($file); 

    $hash = new Zend_Form_Element_Hash('hash'); 
    $hash->setIgnore(true) 
     ->setSalt('mysalt'); 
    $this->addElement($hash); 

    $submit = new Zend_Form_Element_Submit('submit');  
    $submit->setLabel('Test') 
      ->setIgnore(true);    
    $this->addElement($submit); 

    $this->setAttrib('enctype', 'multipart/form-data'); 
    $this->setMethod('post'); 
} 
} 

在我的控制,我做平常驗證

public function indexAction() 
{ 
    $form = new Application_Form_TestForm(); 
    $this->view->form = $form; 

    if($this->_request->isPost()){   
     echo "post"; 
     if($form->isValid($this->_request->getPost())){ 
      echo " valid"; 
     } 
    } 

} 

回答

3

這似乎在你的PHP可能與您的post_max_size或upload_max_filesize的值。 INI。例如,post_max_size的默認值爲8M,小於最大文件大小。

+0

你便又是。在我的php.ini中,這兩個值都是64MB。當我上傳的形式最大(9.5)和PHP最大(64)之間的文件,我得到了'文件超過size`錯誤,但是當我去了PHP的最大值(64)我得到這個與令牌奇怪的錯誤。所以我的下一個問題是:我仍然不明白爲什麼文件大小與散列元素有關。在背景中是否有重定向? – jblue 2011-01-25 03:26:10