폼으로 데이터를 전송할 때 파일도 함께 보낸다면 파일은 바이너리 데이터 전송이라 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
    }