MultipartFile은 스프링 프레임워크에서 제공하는 인터페이스로 HTTP 요청으로 전송된 파일 데이터를 다루기 위한 객체이다. 보통 HTML form을 통해 전송되는 파일 데이터를 처리할 때 사용되는데 postman을 사용해서 테스트 해보았다.

포스트 작성 요청을 받는 컨트롤러 메서드로 여러개의 파일을 처리하기 위해 List<MultipartFile> 로 받는다. 그리고 PostRequest라는 dto 또한 같이 입력으로 받는데 이 때 MultipartFile과 dto를 동시에 받기 위해 @RequestPart 어노테이션을 사용해서 동시에 받을 수 있다.

MultipartFile을 보내기 위해 form 형식으로 데이터를 전송한다. 이미지를 여러장 보내기 위해서는 컨트롤러 메서드에 설정해둔 변수명으로 여러개를 보내면 된다. 그리고 본문 dto 데이터는 content type으로 application/json을 명시해 주어야 한다.
private final Path rootLocation = Paths.get("D:\\output");
public void store(List<MultipartFile> multipartFiles) {
try {
for (MultipartFile file : multipartFiles) {
Path destinationFile = this.rootLocation.resolve(
Paths.get(file.getOriginalFilename())).normalize().toAbsolutePath();
try (InputStream inputStream = file.getInputStream()) {
log.info("# store coffee image!");
Files.copy(inputStream, destinationFile, StandardCopyOption.REPLACE_EXISTING);
}
}
} catch (IOException e) {
throw new RuntimeException("Failed to store file.", e);
}
}
받아온 파일을 저장하는 코드로 D드라이브의 output 폴더에 저장된다.


본문과 이미지 모두 성공적으로 받아온 것을 확인할 수 있다.