참고자료
- 블로그[sohyun] - [JAVA] Converting MultipartFile to File
https://kkumalog.tistory.com/74- 블로그[진짜 개발자] - SpringMVC - Spring MVC 동작원리
https://galid1.tistory.com/528- 블로그[코딩수첩] - Multipart란?
https://codingnotes.tistory.com/73- 블로그[dk22.log] - Spring MVC (15) 파일 업로드1
https://velog.io/@dhk22/Spring-MVC-15-%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C1-Multipartform-data-MultipartFile- 블로그[공부하는개미] - Multipart vs File
https://antstudy.tistory.com/308
Spring에서 제공하는 MultipartFile 인터페이스를 이용하여 uploadFile 메서드를 만들었다.
폼 데이터를 사용하였다.
DB에 부담을 주지 않기 위해 DB에는 해당 이미지의 주소만 저장하고, 서버에 이미지 파일을 저장한다고 한다.
Multipart
MultipartFile
사용자가 업로드한 File을 핸들러에서 손쉽게 다룰 수 있게 도와주는 매개변수 중 하나입니다.
매개변수를 사용하기 위해서는 MultipartResolver Bean이 등록되어 있어야 합니다.
이는 springBoot에서는 자동 등록을 지원하지만, springMVC에서 기본으로 등록해주지 않으므로 꼭 확인해야 합니다.
실제 코드 예시
@PostMapping("/upload/{postId}")
public void uploadFile(@AuthenticationPrincipal UserDetailsImpl userDetailsImpl, @PathVariable("postId") Long postId,
@RequestPart(value = "multipartFile")MultipartFile multipartFile) throws IOException {
postService.uploadFile(userDetailsImpl.getUser(), postId, multipartFile);
}
@Transactional
public void uploadFile(User user, Long postId, MultipartFile multipartFile) throws IOException {
String fullPath="";
if(!multipartFile.isEmpty()){
fullPath = "C:/Users/wkdeh/OneDrive/바탕 화면/spartaSpring/" + multipartFile.getOriginalFilename();
multipartFile.transferTo(new File(fullPath));
}
Post post = postRepository.findByIdAndUser(postId, user)
.orElseThrow(NoSuchElementException::new);
post.uploadFile(fullPath);
}