MultipartFile로 이미지 로컬에 저장하기

JUNO LIM·2023년 4월 28일

Spring

목록 보기
3/9

MultipartFile

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

createPost

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

postman

MultipartFile을 보내기 위해 form 형식으로 데이터를 전송한다. 이미지를 여러장 보내기 위해서는 컨트롤러 메서드에 설정해둔 변수명으로 여러개를 보내면 된다. 그리고 본문 dto 데이터는 content type으로 application/json을 명시해 주어야 한다.

store

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 폴더에 저장된다.

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

profile
개발개발개발자

0개의 댓글