스프링과 파일 업로드

  • 스프링은 이전의 복잡한 과정을 MultipartfIle이라는 인터페이스로 지원한다.

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

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

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

    @PostMapping("/upload")
    // HttpServletRequest 대신 데이터를 바로 매핑해서 가져올 수 있다.
    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";
    }
}
  • ArgumentResolver 덕에 서블릿 대신 직접 데이터를 가져올 수 있게 되었다.

  • 파일 정보를 복잡한 과정 없이 가져올 수 있다.

Last updated