스프링 부트로 파일을 업로드하는 것은 아주 단순한 설정만으로도 가능하다.
스프링부트 내장 WAS인 톰캣을 이용해서 실행한다면 별도의 추가적인 라이브러리 없이 yaml 파일을 수정하는 것만으로 충분하다.
spring:
servlet:
multipart:
enabled: true # 파일 업로드 가능 여부를 선택
location: # 저장할 위치
max-request-size: 30MB # 한 번에 최대 업로드 가능 용량
max-file-size: 10MB # 파일 하나의 최대 크기
@RestController
@Slf4j
public class UploadController {
@PostMapping("/file")
public void uploadFile(MultipartFile[] uploadFiles) {
for (MultipartFile file : uploadFiles) {
//실제 파일 이름 IE나 Edge는 전체 경로가 들어옴
String originalName = file.getOriginalFilename();
String fileName = originalName.substring(originalName.lastIndexOf("\\\\") + 1);
log.info("fileName: {}", fileName);
}
}
}
파일이 업로드되었다면 저장을 해야 한다.
스프링 자체에서 제공하는 FileCopyUtils를 이용할 수도 있고, MultipartFile 자체에도 transferTo()
메서드를 이용해 간단히 파일을 저장할 수 있다.
파일을 저장할 경로는 설정 파일에서 지정하여 사용하자!
io:
dongyeop:
upload:
path: //저장할 위치 #/usr/dongyeop