오봉이와 함께하는 개발 블로그

스프링 MVC 2 - 스프링과 파일 업로드 본문

BE/Spring

스프링 MVC 2 - 스프링과 파일 업로드

오봉봉이 2022. 9. 1. 20:46
728x90

스프링과 파일 업로드

스프링은 MultipartFile이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원한다.

SpringUploadController

@Slf4j
@Controller
@RequestMapping("/spring")
public class SpringUploadController {

    @Value("${file.dir}")
    private String fileDir;

    @GetMapping("/upload")
    public String newFile() {
        return "upload-form";
    }

    @PostMapping("/upload")
    public String saveFile(@RequestParam String itemName,
                           @RequestParam MultipartFile file,
                           HttpServletRequest request) throws IOException {
        log.info("request = {}", request);
        log.info("itemName = {}", itemName);
        log.info("multipartFile = {}", file);
        if (!file.isEmpty()) {
            String fullPath = fileDir + file.getOriginalFilename();
            log.info("파일 저장 fullPath = {}", fullPath);
            file.transferTo(new File(fullPath));
        }
        return "upload-form";
    }
}

@RequestParam MultipartFile file 업로드하는 HTML Form의 name에 맞추어 @RequestParam을 적용하면 된다.
추가로 @ModelAttribute에서도 MultipartFile을 동일하게 사용할 수 있다.

MultipartFile 주요 메서드
file.getOriginalFilename() : 업로드 파일 명
file.transferTo(...) : 파일 저장

실행 로그

request = org.springframework.web.multipart.support.StandardMultipartHttpServletRequest@8c60bd4
itemName = asd
multipartFile = org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile@6ce3664d
파일 저장 fullPath = /Users/gobyeongchae/Desktop/fileUploadV1/IMG_4587.JPG
출처 : 인프런 김영한 지식공유자님 강의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
728x90
Comments