테스트 사이트 - 개발 중인 베타 버전입니다

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

Rido 6년 전 조회 4,695

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

 

일단 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개

채택된 답변
+20 포인트
6년 전

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

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

</p>

<p>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);</p>

<p>        if(!token) {

            alert("토큰 정보가 올바르지 않습니다.");

            return false;

        }

        formData.append('token', token);

        myRequest.open('post', '<?php echo $action_url?>',true);

        myRequest.send(formData);

    }

}</p>

<p>

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

 

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

R
Rido
6년 전
네 일단 인자 전송은 되는거 같습니다

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

processData: false,
볼피드
6년 전
print_r($_FILES); 로 파일값이 제대로 오는지 한번 찍어보세요

다른쪽으로 세는지 확인해보려면 print_r($_REQUEST)로 확인해보시면 php에서 어떤식으로 받고 있는지 확인이 될듯하네요
R
Rido
6년 전
$_REQUEST 로는 값이 잘 전달되는데
$_FILES로는 아무런 값을 전달 받지 못하네요...

구글신 검색 셈플로도 $_FILES로 전달을 받아야 할거 같은데 말이죠 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

Rido
6년 전

서버의 문제인거 같네요 

다른서버에서 테스트 하니 잘 돌아갑니다. 

 

에휴 팔자야

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

6년 전

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

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

아니면 지송....

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

R
Rido
6년 전
ㅋ... 네 찾는거와는 조금 다르네요 관심 감사합니다. 넙죽

댓글을 작성하려면 로그인이 필요합니다.

6년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

R
Rido
6년 전
ㅋ.. 검색해봐도 하얀건 바탕이고 검은건 글자인거 같은데
천성이 옹이구멍이라.. 봐도 이해가..

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인