2014-03-05 1 views
0

비동기 파일 업로드를 만들려고하지만 벽을 치고 있습니다.CakePHP jQuery 비동기 업로드

요소 :

<div style="border:0px solid darkgray; width:100%; text-align: right; text-decoration: underline; font-weight: bold;"> 
    <form id="upload_form" enctype="multipart/form-data"> 
     <input type="file" accept="" id = "templatePath" name = "templatePath" name="MAX_FILE_SIZE" value="104857600"> 
     <input type="submit" value="Submit" id = "bntSubmit" name = "bntSubmit" onclick="submitFileUpload();" > 
    </form> 
</div> 

JQuery와 : 여기가 요소에서, 무엇을 가지고

function submitFileUpload(){ 
    try{ 
     var FileUrl = "/staff/passport/upload_file/"; 
     var request_timeout = 50000; 
     var formData = new FormData(); 
     var files =$('#templatePath')[0].files[0]; 

     formData.append('templatePath', files); 


     $.ajax({ 
      url: FileUrl, 
      type: 'POST', 
      timeout: request_timeout, 
      cache: false, 
      contentType: false, 
      processData: false, 
      data:formData, 
      beforeSend: function(xhr){ 

      }, 
      success: function(data) { 
       try{ 

        if(data.status =='ok'){ 

        }else{ 

        } 
       }catch(ex){ 

       } 



      }, 
      error: function(XMLHttpRequest, textStatus, errorThrown) { 


      } 
     }); 


     return false; 
    }catch(ex){ 

    } 
} 

컨트롤러 기능 :

public function upload_file(){ 
    try{ 
     $this->autoRender = false; 


    } catch (Exception $e){ 
     return $this->EncodeError($e); 
    } 
} 

jquery는 괜찮은 것 같습니다. 중단 점에 도달하면 개체 "파일"이 만들어지고 파일 특성이 있음을 알 수 있습니다. 컨트롤러 함수도 호출되지만 폼 데이터는 내 디버거에 표시되지 않습니다 ("this"또는 _FILES [] 또는 기타 변수에 없음). 누구든지 도와 줄 수 있습니까? 귀하의 의견을 바탕으로

감사 제이슨

+0

요소가 기존 양식 내에서 호출 되었습니까? 즉, 중첩 된 양식을 사용할 수 있습니까? – jimmymadon

+0

예. 재사용 가능한 요소를 만들려고하므로 중첩 된 형식으로 될 수 있습니다. – jason

답변

0

, 당신은 또 다른 형태 내에서 파일 업로드 요소를 내포하고 있습니다. 네 스팅 (nesting)은 유효한 HTML이 아니므로 예상 결과를 제공하지 않는 브라우저를 혼란스럽게합니다. this answer을 참조하십시오.

해결 방법 유일한 해결책은 원래 외부 양식에서 파일 업로드 양식을 제거하고 외부에 배치하는 것입니다. CSS를 사용하여 업로드 양식을 원래 양식에 표시하십시오.

+0

@jason이 기능을 사용 했나요? – jimmymadon