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