2011-01-25 16 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です。 max(9.5)とphp max(64)の間にファイルをアップロードすると 'file exceeded size'というエラーが出ますが、php max(64)を調べるとトークンでこの奇妙なエラーが発生します。だから私の次の質問です:まだ私はファイルサイズがハッシュ要素と何か関係があるのか​​分からない。バックグラウンドにリダイレクトがありますか? – jblue

+1

@jblue。あなたのpost_max_sizeを超えると、yout $ _POST変数は空になると思います。アクション(var_dump($ _ POST))で確認できます。したがって、Zend Formに関する限り、あなたの書式によって値は提出されませんでした。 – Marcin

関連する問題