2014-07-17 3 views
0

Input::file('uploadname'); 메서드에 액세스하려고 시도 할 때 internal service 500 오류가 계속 발생하여 Call to a member function move() on a non-object 오류가 발생합니다.개체가 아닌 오브젝트에서 move() 함수 호출 Laravel 4 파일 업로드

나는 다음과 같은 코드를 사용하여 VAR 덤프를 할 경우

echo '<pre>'; 
var_dump(Input::all()); 
echo '</pre>'; 

내가 필드에 데이터가있는 출력을 얻을를하지만, Input::hasFile('uploadname');에 액세스 할 때 false를 준다? 여기

양식 코드 :

<div id="div123"> 
        <input type="button" value="Upload CV" class="uploadCV"> 
       </div> 
       <div id="uploadbutton"> 
        <input type="file" name="upload_cv_company_rep" class="cv" id="upload_cv_company_rep"/> 
       </div> 

이 버튼이 표시, 당신이 그것을 클릭하면, 그것은 input type="file" 물건을 트리거합니다.

그것은 보여줍니다 콘솔에서 var_dump 다음

console output from var_dump

내 컨트롤러의 코드 것은 :

$("#upload_employee_form").submit(function(e){ 
// e.preventDefault(); 
// alert("hey"); 

var d = new FormData(document.getElementById('upload_employee_form')); 
d.append('password', $('.password').val()); 
d.append('referencecode', $('.ref_code').val()); 
console.log(d); 
$.ajax({ 
    url: '/laravel/rsms/public/company-representative-create-user', 
    data: d, 
    type: 'POST', 
    processData: false, 
    success: function(res) { 
     console.log(res); 
     alert("Success!"); 
    }, 
    error: function() { 
     alert("Something went wrong!"); 
    } 
}); 

return false; 
}); 
+1

작동합니다 + 제안 : http://stackoverflow.com/questions/4597487/post-a-form-with-jquery-ajax-when-input-is-a-file – Unnawut

+0

@Unnawut FormData를 사용하고 있습니다. 많은 사람들. 그러나 제 경우에는 고생하고 있습니다. –

+0

아 맞아, FormData에 대해 알지 못한다. – Unnawut

답변

0

: 여기

public function uploadUser() { 

    if(Input::hasFile('upload_cv_company_rep')) { 
     Input::file('upload_cv_company_rep')->move('uploads/'); 
    } else { 
     echo '<pre>'; 
     var_dump(Input::all()); 
     echo '</pre>'; 
    } 

} 

는 아약스 부분입니다 아니요,이 작업을 수행해야하는 것은 아닙니다.

var d = new FormData(document.getElementById('upload_employee_form')); 
d.append('password', $('.password').val()); 
d.append('referencecode', $('.ref_code').val()); 

^잘못하고 있습니다. 우선 jquery가 포함될 때 네이티브 DOM 선택기를 사용하는 것은 중요하지 않습니다. 둘째, 필드를 나중에 추가하면 어떻습니까? 해당 필드는 d.append(...)입니다.

파일을 포함하여 직렬화 된 형식을 보낼 권리 매우 일반적인 방법 :

$("form").submit(function(event){ 
    event.preventDefault(); 

    var data = new FormData($(this)[0]); 

     $.ajax({ 
      // Note, both processData and contentType should be set to false 
      processData : false, 
      contentType : false, 

      url  : "/laravel/rsms/public/company-representative-create-user", 
      data : data, 
      success : function(response) { 
        alert(response); 
      } 
     }); 

}); 

그리고 당신은 더 이상 d.append()도 경우에 당신이 미래에 어떤 필드를 추가 할 필요가 없습니다. 양식 직렬화는 완전히 역동적입니다. 서버 측에 관해서는

, 당신이 무슨 일을 계속, 그 "그것은 업로드 필드가 포함 된 경우 JQuery와 AJAX를 통해 양식을 게시 할 수 없습니다, 기본적으로."지금

관련 문제