2017-02-16 3 views
0

이미지 파일을 업로드하고 MySQL 데이터베이스에 저장된 파일 위치의 경로와 함께 서버에 저장하려고합니다. 나는 데이터를 전송하는 아약스 요청을 사용하고 있지만 파일의 모든 부분에 접근 심각한 문제가 데 :fileData에 액세스 할 때의 문제

<input type="file" id="upload_file" name='upload_file' style="width: 0px;height: 0px;"> 

통화를

function upload_photo(user_id) { 

    var file = document.getElementById('upload_file') 

    /* Create a FormData instance */ 
    var formData = new FormData(form); 
    formData.append('user_id', user_id) 
    formData.append('file', file) 
    request = new ajaxRequest() 
    request.open("POST", "edit_details.php", true) 
    request.setRequestHeader("Content-type", "multipart/form-data") 
    request.onreadystatechange = function() { 
     if (this.readyState == 4) 
      if (this.status == 200) 
       if (this.responseText != null) 
        O('page').innerHTML = this.responseText 
    } 
    request.send(formData) 

} 

요청 페이로드의 모습을이 자바 스크립트를

PHP를 이렇게 :

------WebKitFormBoundaryFA8fI4XH99ES61F6 
Content-Disposition: form-data; name="file" 

[object HTMLInputElement] 
------WebKitFormBoundaryFA8fI4XH99ES61F6 
Content-Disposition: form-data; name="user_id" 

1001 
------WebKitFormBoundaryFA8fI4XH99ES61F6-- 

내가 var_dump ($ _REQUEST)를 호출 할 때 인쇄합니다

아이디어가 있습니까? 로드를 살펴 봤지만이 문제를 해결할 수는 없습니다.

나는 대학의 교수와 이야기를하고 있었고 "multipart/form-data"는 문제가 될 수 있으며 PUT을 사용하는 것이 더 좋다고 말했습니까?

답변

1

이 문제와 관련하여 여기에서 언급 할 두 가지 사항이 있습니다.

먼저 자바 스크립트에서 클라이언트 측에서 여러 부분으로 된 데이터를 전달해야 할 추가 작업이 필요합니다. 선생님이 이야기했을 것 같은데 의심 스럽습니다. 이를 위해 this SO answer으로 연결됩니다.

둘째, 서버 측에서는 다른 모든 양식 데이터와 달리 $ _GET, $ _POST 또는 $ _REQUEST 배열에 있지 않고 대신 자신의 $_FILES array에 있습니다. 필자는이 내용을 읽을 것을 권장하지만 기본적으로 PHP는 임시 위치에 업로드 할 것이므로 파일을 최종 위치에 복사 한 다음 데이터베이스에 경로 인 을 저장해야합니다.

희망이 도움이됩니다.

+0

대단히 도움이되어 엄청난 시간을 절약 해 주셨습니다. 대단히 감사합니다. –

관련 문제