XMLHttpRequest를 통해 파일을 업로드하고 싶습니다. 나는 어디에서나 예제를 찾아 보았고 꽤 많은 것을 발견했다. 그러나 내가 잘못하고있는 것이 무엇인지 알 수 없습니다. 이것은 내 코드입니다. 이 기능은 버튼을 누르면 트리거됩니다. 태그에서 감싸지 않았습니다.XMLHttpRequest가 파일을 보내지 않습니다.
function upl_kost() {
var url = "proces_data.php?ref=upload_kost";
var hr;
var file = document.getElementById("file_kost");
var formData = new FormData();
formData.append("upload", file.files[0]);
if (window.XMLHttpRequest) {
hr=new XMLHttpRequest();
} else {
hr=new ActiveXObject("Microsoft.XMLHTTP");
}
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "multipart/form-data");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
alert(return_data);
}
}
hr.send(formData);
}
이 기능은이 기능을 포착합니다.
if($_GET['ref'] == 'upload_kost') {
var_dump($_FILES);
}
내 문제는 $ _FILES가 비어있는 것입니다. js에서 file.files 변수를 볼 때 업로드하려고하는 파일의 데이터가로드됩니다.
감사합니다.
파일 (업로드)에는 GET이 아닌 POST 방법이 필요합니다. 따라서 양식의 메소드가 GET으로 설정되어 있으면 POST로 변경하십시오. POST와 GET에 모두 사용할 수있는'$ _GET' 대신'$ _REQUEST'를 사용할 수도 있습니다. '($ _REQUEST ['ref '] =='upload_kost ')' –
@ Fred-ii-ref = upload_kost'가'url'에 있습니다. 즉 _GET_ 매개 변수입니다. _XMLHttpRequest_가 _POST_로 열리고, formData가 post 데이터로 전송됩니다. –
나는 그것이 문제가 아니라고 생각한다. hr.open ("POST", url, true)로 볼 수 있듯이; 게시하도록 설정됩니다. vardump가 트리거되지만 그저 비어 있습니다. – Jaap115