파일이 여기서 선택되면 비동기로 컨트롤러에 보내주고 응답까지 받는다
<p><input type="file" id="inputFile" /></p>
$("#inputFile").on("change",function(event){
console.log("change!!");
let userId = $("#userId").val();
let password = $("#password").val();
//event.target : <input type="file"....
let files = event.target.files;
let file = files[0];
console.log("files : ", files);
console.log("file : ", file);
//formData : <form></form>
let formData = new FormData();
formData.append("userId", userId);
formData.append("password", password);
formData.append("file", file);
$.ajax({
url:"/uploadAjax",
processData:false,
contentType:false,
data:formData,
type:"post",
dataType:"text",
success:function(result){
console.log("result : ", result);
alert(result);
}
})
});
@ResponseBody
@PostMapping("/uploadAjax")
public Map<String, Object> uploadAjax(String userId, String password, MultipartFile file) {
String fileName = file.getOriginalFilename();
log.info("userId : " + userId);
log.info("password : " + password);
log.info("fileName : " + fileName);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userId", userId);
map.put("password", password);
map.put("fileName", fileName);
return map;
}
json 객체 타입을 보낸게 아니라서 @requestBody는 안붙인것같다..