파일업로드를 할경우 가장 기본적으로 뷰에있는 폼에 enctype="multipart/form-data"를 추가해주어야한다.
그 후 스프링 설정으로 multipartResolver를 등록해주어야한다. 이때 빈의 이름은 꼭 multipartResolver 여야만한다.
DispatcherServlet은 multipartResovler라는 이름만을 사용하기 때문에 다른이름을 사용해서는 안된다.
<bean id = "multipartResolver" class = "org.springframework.web.multipart.common.CommonMultipartResolver"/>
이렇게 스프링에 설정을 하고 원하는 속성이 있으면 maxUploadSize, maxInMemorySize, defaultEncoding을 설정해 줄 수 있다. 설정이 끝난 후 컨트롤러에서 요청된 파일을 사용하려면 MultipartFile 인터페이스를 사용하면 된다. MultipartFile인터페이스가 제공하는 메서드를 사용해서 파일의 이름, 크기, 실제데이터 등을 알 수 있다.
@RequestMapping(value = "file")
public ModelAndView fileup(@RequestParam("f") MultipartFile multipartFile, MultipartHttpServletRequest request) {
MultipartFile file = request.getFile("f");
String originalFileName = multipartFile.getOriginalFilename();
ModelAndView mav = new ModelAndView("file");
mav.addObject("originalFileName", originalFileName);
return mav;
}
파일이름이 "f"로 넘어온경우 이런식으로 사용할 수가 있다. MultipartHttpServletRequest 인터페이스는 HttpServletRequest와 MultipartRequest를 상속받은 인터페이스로 웹요청정보와, 파일정보관련 메서드를 모두 사용할 수 있다. MultipartHttpServletRequest가 제공하는 메서드는 다음과 같다.
- Iterator<String> getFileNames() - 업로드 된 파일들의 파라미터 이름 목록을 제공해준다.
- MultipartFile getFile(String name) - 업로드 된 파일들 중 파라미터 이름이 name인 파일정보를 구한다.
- List<MultipartFile> getFiles(String name) - 파라미터 이름이 name인 업로드 파일 정보 목록을 구한다.
- Map<String, MultipartFile> getFileMap() - 파라미터 이름을 키로, 파라미터에 해당하는 파일정보를 값으로 하는 Map을 구한다.
이정도만 잘써도 다중업로드까지는 문제없게 사용할 수 있다.
'Spring' 카테고리의 다른 글
Spring(14) - 데이터베이스 연동(JDBC), 트랜잭션 (0) | 2019.04.17 |
---|---|
Spring(13) - WebSocket (0) | 2019.04.16 |
Spring(11) - XML/JSON, @RequestBody, @ResponseBody (0) | 2019.04.16 |
Spring(10) - Restful방식을 스프링에서사용하기 (2) | 2019.04.15 |
Spring(9) - View구현 (0) | 2019.04.15 |