스프링/4. 스프링 MVC-2

86. 스프링의 파일 업로드

sdafdq 2023. 9. 25. 00:17
@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) throws IOException {
        if(!file.isEmpty()){
            String fullPath = fileDir + file.getOriginalFilename();
            file.transferTo(new File(fullPath));
        }
        return "upload-form";
    }
}

정말 코드가 짧아졌다.

 

여기서 중요한 것은, @RequestParam MultipartFile 이걸로 파트 중 파일 부분만 여기에 담을 수 있다는 것이다.

 

그래서 만약 파일이 비어있지 않다면,

파일을 저장할 경로 + 파일의 이름으로 만들고

file.transferTo(new File(경로 + 이름))

저 파일을 저 경로로 옮기는 것이다.

 

 

MultipartFile은 또 size(), 등 다양한 파일과 관련된 메소드를 지원해 준다.

 

또, @ModelAttribute 에서도 MultipartFile을 동일하게 사용할 수 있다.