[Spring] Multipart 요청 처리

chael_lo·2022년 7월 4일
0

Spring

목록 보기
6/7

폼으로 데이터를 전송할 때 파일도 함께 보낸다면 파일은 바이너리 데이터 전송이라 Content-type을 multipart/form-data로 지정 해주어야 한다.

MultipartHttpServletRequest

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";
    }

requestParam

요청 파라미터 타입 중 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"; //모델 객체에 담아 리턴
   }

requestPart

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
    }

MultipartFile 메서드

  • List< MultipartFile> getFiles("name")
    • 파일 목록을 리스트 형태로 받았을 때
    • input multiple일 경우 파일 여러개 선택 시 input의 name을 파라미터 명으로 파일들을 가져올 수 있다.
  • MultipartFile getFile("name")
    • 업로드된 단일 파일 정보를 가져올 때
    • 파일 input의 name을 파라미터 명으로 한 파일을 가져올 수 있다.
  • Map<String, MultipartFile> getFileMap
    • 파라미터 이름을 키로 파라미터에 해당하는 파일 정보를 값으로 하는 Map을 가져올 수 있다.
  • 업로드된 파일 정보를 가져오는 메서드들은 공통으로 만들어 사용한다.
profile
천천히 꾸준히

0개의 댓글