스프링 MVC 2편(백엔드 웹 개발 활용 기술)

Ch11. 파일 업로드 - 스프링과 파일 업로드

webmaster 2022. 3. 23. 12:29
728x90

스프링이 지원하는 파일 업로드

@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을 동일하게 사용할 수 있다
  • file.getOriginalFilename() : 업로드 파일 명
  • file.transferTo(...) : 파일 저장
728x90