jquery ajax로 파일 업로드를 포함한 폼전송에 관련 문의 입니다.

jquery ajax로 파일 업로드를 포함한 폼전송에 관련 문의 입니다.

QA

jquery ajax로 파일 업로드를 포함한 폼전송에 관련 문의 입니다.

본문

해당건에 관련해서 검색을 해봐도 딱히 해결이 되지 않아서 이렇게 문의 드립니다.

 

일단 ajax로 파일을 전송하면

$_FILES 변수로 값을 전송받지 못합니다.

 

해서 

var_dump를 이용해서 $_POST를 찍어보면

array(62) { ["------WebKitFormBoundaryJV7IKSBR1miFExr2 Content-Disposition:_form-data;_name"]=> string(1551) "\"thesisfile\"; filename=\"51148752_2171435046506240_9156457339736293376_n.jpg\" Content-Type: image/jpeg 

 

이런 형태로 배열을 가지고 가긴 합니다.

해당 배열을 값만 다시 배열화 해서 받는 방법이나 

ajax형태로 전송했을때 일반적인 $_POST['인자값'] 형태로 변환하는 방법을 알고 싶습니다.

고수님들의 도움이 필요합니다 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 4

file을 ajax로 전송하실때는 formdata 객체 생성하여 가는 방식으로 해야 합니다.

아래는 제가 만들다 만 그누보드 플러그인 소스 중 하나인데


function dfwrite_submit(name)
{
    form =  document.forms[name];
    formData = new FormData(document.getElementById(name));
    var uploadFileList = Object.keys(fileList);
    for(var i = 0; i < uploadFileList.length; i++){
        formData.append('bf_file['+i+']', fileList[uploadFileList[i]], fileList[uploadFileList[i]].name);
    }
    var myRequest = new XMLHttpRequest();
    myRequest.onreadystatechange = function(){
     if(myRequest.readyState == 4 && myRequest.status == 200){
      //location.href=myRequest.responseURL;
      console.log(myRequest.responseText);
     }
    };
    
    if(form.onsubmit())
    {
        var f = form;
        if (typeof(f.bo_table) == "undefined") {
            return;
        }
        var bo_table = f.bo_table.value;
        var token = get_write_token(bo_table);
        if(!token) {
            alert("토큰 정보가 올바르지 않습니다.");
            return false;
        }
        formData.append('token', token);
        myRequest.open('post', '<?php echo $action_url?>',true);
        myRequest.send(formData);
    }
}

파일의 경우 사용자가 업로드를 선택 하면 복사나 삭제는 가능해도 수정은 불가능한 객체라서

 

저런식으로 ajax로 전송하셔야 합니다

 

네 일단 인자 전송은 되는거 같습니다

jquery ajax에서 해당 옵션을 주니  multipart 적용이 되서 파일이 전송되기는 하는데
ajax로 받는 php쪽에서 배열로 못받아주네요 ㅠㅠ

processData: false,

print_r($_FILES); 로 파일값이 제대로 오는지 한번 찍어보세요

다른쪽으로 세는지 확인해보려면 print_r($_REQUEST)로 확인해보시면 php에서 어떤식으로 받고 있는지 확인이 될듯하네요

ajax로 파일 전송은 안되면 구글에서 ajax file upload 검색해보시면 방법을 찾으실수 있으실겁니다.

https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=276427

도움이 되실려나 모르겠습니다....^^;;

아니면 지송....

답변을 작성하시기 전에 로그인 해주세요.
전체 1,010
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT