formdata로 파일을 업로드하려고합니다. 파일 만 작동하지만 일부 사용자 데이터를 업로드해야합니다. 나는 formdata를 추가하려했지만, "print_r"배열 ($ _ FILES)이 아약스에 의해 호출 된 php 파일에 나타나지 않습니다.다중 자료 파일 업로드 (formdata)
누군가가 문제에 대한 해결책을 가지고 있거나 더 나은 방법으로 userdata로 파일 업로드를 해결하려는 경우 알려 주시기 바랍니다.
당신이 사용하는 코드를 찾을 수 있습니다 아래 :
PHP :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link href="style.css" rel="stylesheet" type="text/css">
<script src="jquery-1.12.0.min.js"></script>
</head>
<body>
<div class="container">
<h1>AJAX File upload</h1>
<form method="post" action="" enctype="multipart/form-data" id="myform">
<input type="text" id="test" value="sample">
<div >
<img src="" id="img" width="100" height="100">
</div>
<div >
<input type="file" id="file" name="file" />
<input type="button" class="button" value="Upload" id="but_upload">
</div>
</form>
</div>
</body>
<script type="text/javascript">
$(document).ready(function(){
$("#but_upload").click(function(){
//console.log("piemel");
console.log(document.getElementById('test').value);
var fd = new FormData();
var files = $('#file')[0].files[0];
fd.append('test', document.getElementById('test').value);
fd.append('file',files);
console.log(fd);
$.ajax({
url:'upload.php',
type:'post',
data:fd,
contentType: false,
processData: false,
success:function(response){
if(response != 0){
$("#img").attr("src",response);
}
},
error:function(response){
alert('error : ' + JSON.stringify(response));
}
});
});
});
</script>
</html>
아약스 파일 :
<?php
/* Getting file name */
$filename = $_FILES['file']['name'];
/* Location */
$location = "upload/".$filename;
/* Upload file */
if(move_uploaded_file($_FILES['file']['tmp_name'],$location)){
echo $location;
}else{
echo 0;
}
이것은 내 요구에 완벽하게 작동합니다. 나는 $ file_extension = end ($ temporary) 만 변경했다. ~ $ file_extension = strtolower (끝 ($ 임시)); –