2011-07-20 6 views
0

ファイルアップロードボタンがあるページを表示するには、fancy box iframeを使用しています。私がフォームを送信すると、私は "ファイルが定義されたiniのサイズを超えています"をクリックします。私はGoogleとstackoverflowの下でいくつかのリンクを確認した。しかし、見つけることができません。私はenctype="multipart/form-data"を私のフォームに持っています。続いて、私は非常に奇妙な...私は私の画像をアップロードすることができ、インラインフレームを使用しなかった場合にも、私のコードiframeを使用しているときにファイルが定義されたiniサイズを超えています

public function createForm($data = array()) 
    { 
     $this->setMethod(Zend_Form::METHOD_POST); 
     $this->setEncType(Zend_Form::ENCTYPE_MULTIPART); 
       $this->setAttrib('id', 'createsub'); 
      $this->setAction(
       $this->getView()->getHelper('url')->url(array(
       'controller' => 'test', 
       'action'  => 'create' 
      )) 
      ); 

     $this->setDecorators(array(
       'Description', 
       'FormElements', 
       'Form' 
     )); 

     $fnameNotEmpty = new Zend_Validate_NotEmpty(); 
     $fnameNotEmpty->setMessage('Name cannot be empty.'); 
     $fnameStrlen = new Zend_Validate_StringLength(1, 20); 

     $name = new Zend_Form_Element_Text('name', array(
      'label' => 'Name:', 
      'value' => '', 
      'class' => 'text-size text', 
      'tabindex' => '1', 
      'required' => true, 
      'validators' => array(
       array($fnameNotEmpty, true), 
       array($fnameStrlen, true) 
     ), 
     'decorators' => $this->requiredElementDecorators, 
     'description' => '<img src="../../'.$baseurl.'/images/star.png" alt="required" />', 
      'filters' => array('StringTrim') 
     )); 
     $this->addElement($name); 

....   .....   ..... 

     $brochure = new Zend_Form_Element_File('brochure', array(
      'label' => 'Brochure:*', 
      'value' => '', 
      'class' => 'text-size text', 
      'tabindex' => '3', 
      'required' => true, 
      'filters' => array('StringTrim') 
     )); 
     $this->addElement($brochure); 




      $submit = $this->createElement('button','addtbtn',array('class'=>'Test','label'=>'Create')); 
      $submit->setIgnore(true); 
    $this->addElement($submit); 
     return $this; 
    } 

です。

は私が

public function validateformAction() 
{ 
    $this->_helper->viewRenderer->setNoRender(); 
    $this->_helper->getHelper('layout')->disableLayout(); 

     $p  = new Admin_Model_DbTable_Test(); 
     $p  = $p->getData(); 

     foreach($p AS $k => $v) 
     { 
      $p[$v['catid']] = $v['name']; 
     } 

     $form = new Admin_Model_Form_SubTest(); 
     $f = $form->createForm(array('parents' => $p)); 
    $f->isValid($this->_getAllParams()); 
    $json = $f->getMessages(); 
    echo Zend_Json::encode($json); 
} 

だからこれは私が上に与えた関数を呼び出します

<script type="text/javascript"> 
var Path="<?php echo $this->eurl; ?>" 
$(function() 
{ 
    vReg=0 
    $("#addtbtn").click(function() 
    { 
     if(vReg == 1) 
     { 
      return true; 
     } 
     else{ 
     var url = 'validateform'; 
     var data = {}; 
     $("input").each(function() 
     { 
      data[$(this).attr('name')] = $(this).val(); 
     }); 
     $("select").each(function() 
     { 
      data[$(this).attr('name')] = $(this).val(); 
     }); 
     $("textarea").each(function() 
     { 
      data[$(this).attr('name')] = $(this).val(); 
     }); 
       $.post(url,data,function(resp) 
     { 
      vError="" 
      for(id in resp){ 
       oResp=resp[id]; 
       for(key in oResp){ 
        vError +=oResp[key]+"\n" 
       } 
      } 
      if(vError == ''){ 
       vReg=1 
           $("#createform").attr('target','_top'); 
       $("#createform").submit(); 
           return true; 
      } 
      else{ 
           $("#createform").attr('target','_self'); 
       alert(vError) 
           return false; 
          } 
     },'json'); 

     } 
    }); 
}); 

</script> 

はまた、私のコントローラで、次のような機能があり、次のコードでのAjaxを使用して検証を行います投稿を投稿し、検証を行い、エラーを返します。しかし、私はいつも "File exceeds the defined ini size "を取得しました。私はこのコードを間違っていました。

こんにちは。

答えて

1

.iniファイルのupload_max_filesizeの設定を確認してください。それがこのエラーの原因です。

+0

ありがとうございます。でも、アップロードファイルを使用してフォームをクリックしても、メッセージが表示されます。また、私はupload_max_filesizeでチェックしました、イメージのサイズはupload_max_filesizeよりも小さいです。 – mymotherland

+0

iframeを使用しなかった場合、私は自分の画像をアップロードすることができます...非常に奇妙 – mymotherland

+1

通常のページのアップロードからのiframeへのアップロードの違いはありません。 $ _FILESをダンプすることで、サーバ上で何が受信されているかを確認したいかもしれません。 –

0

ファイル入力時に.val()を呼び出すと、選択したファイルのパスが取得されますが、バリデータがファイル自体を期待しているため、奇妙なエラーが発生します。ほとんどの人はajaxのバリデーションを行うときにファイル入力をスキップし、submitでチェックします。

関連する問題