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 객체 생성하여 가는 방식으로 해야 합니다.
아래는 제가 만들다 만 그누보드 플러그인 소스 중 하나인데
</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개
다른쪽으로 세는지 확인해보려면 print_r($_REQUEST)로 확인해보시면 php에서 어떤식으로 받고 있는지 확인이 될듯하네요
$_FILES로는 아무런 값을 전달 받지 못하네요...
구글신 검색 셈플로도 $_FILES로 전달을 받아야 할거 같은데 말이죠 ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=276427
도움이 되실려나 모르겠습니다....^^;;
아니면 지송....
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
jquery ajax에서 해당 옵션을 주니 multipart 적용이 되서 파일이 전송되기는 하는데
ajax로 받는 php쪽에서 배열로 못받아주네요 ㅠㅠ
processData: false,