폼으로 데이터를 전송할 때 파일도 함께 보낸다면 파일은 바이너리 데이터 전송이라 Content-type을 multipart/form-data로 지정 해주어야 한다.
HttpServletRequest 객체 안에 포함된 파라미터 요청 중에서 File 데이터를 추출할 때에는 MultipartHttpServletRequest와 MultipartFile을 이용해서 추출할 수 있다.
@RequestMapping(value = "/test/submit",
method = RequestMethod.POST)
public String testSubmit(MultipartHttpServletRequest request) {
String num = request.getParameter("number");
MultipartFile testFiles = request.getFile("testFiles");
return "test/complete";
}
요청 파라미터 타입 중 MultipartFile 타입에 해당하는 한 가지를 골라서 file 데이터를 다룰 수 있다.
requestParam 형식
@RequestParam("가져올 데이터의 이름") 데이터 타입 "변수 이름
@RequestMapping("/board/checkId")
public String checkBoard(@RequestParam("id") String id,
@RequestParam("pwd") String pwd, Model model) {
model.addAttribute("id", id);
model.addAttribute("pwd", pwd);
return "/board/checkBoard"; //모델 객체에 담아 리턴
}
file 객체와 VO 객체를 한번에 받을 때 사용한다.
하나의 api에서 MediaType을 지정하여 Json과 MultipartFile을 한번에 전달 받을 수 있다.
@PostMapping(value = "/json/multipartFile",
consumes = {MediaType.APPLICATION_JSON_VALUE,
MediaType.MULTIPART_FORM_DATA_VALUE})
public void saveCharacter(@RequestPart CharacterCreateRequest request,
@RequestPart MultipartFile imgFile) {
//request.getAge()
//request.getName()
//imgFile
}