Search

44. 스프링부트 포토그램 프로필 페이지 Image 유효성 검사하기

프로필 페이지

이미지 업로드 밸리데이션 체크를 할거다.
upload.jsp에
추가했던 required="required" 부분은 지워준다
사진설명이 필수로 안할거라서 뺐다.
근데 이미지 자체는 필수라서
이런식으로 @NotBlank를 넣어서 필수값 처리를 할 수 있는데 MultipartFile 타입은 지원하지 않는다
그래서 AuthController 처럼 회원가입의 밸리체크같은게 먹질않는다
그래서 강제로 만들어주면 된다
ImageController.java의 imageUpload함수에 서비스호출전에
if(imageUploadDto.getFile().isEmpty()) { System.out.println("이미지가 첨부되지 않았습니다."); }
Java
복사
추가해줘서 콘솔에 찍히는지 본다
사진 캡션 둘다 넣지않고 그냥 업로드하면
이미지가 첨부되지 않았습니다. 이미지 파일이름 :: c198d0e2-88b6-4f9a-8989-d0b696c0126d_ Hibernate: insert into Image (caption, createDate, postImageUrl, userId) values (?, ?, ?, ?) imageEntity :: Image(id=2, caption=, postImageUrl=c198d0e2-88b6-4f9a-8989-d0b696c0126d_, user=User(id=2, username=ssar, password=$2a$10$2FhIKYOFhFortFF8l/Ab/OK0ZopqECPQfSWrIHz3qy/cJsQchbVmK, name=, website=null, bio=null, email=ssar@nate.com, phone=null, gender=null, profileImageUrl=null, role=ROLE_USER, createDate=2023-08-27T21:19:22.042724), createDate=2023-09-04T21:35:57.394597)
Java
복사
아무것도 안해도 밑에 insert가 되고 있다
그래서 입셉션 처리를 해주도록 한다.
if(imageUploadDto.getFile().isEmpty()) { throw new CustomValidationException("이미지가 첨부되지 않았습니다.", null); }
Java
복사
이제 아까 처럼 사진하고 캡션을 아무것도 넣지않고 등록하면
오류 화면으로 넘어간다. 근데 CustomValidationException 발동하면은
ControllerExceptionHandler.java의 validationException이 먹지 않았다.
ControllerExceptionHandler.java
@ExceptionHandler(CustomValidationException.class) public String validationException(CustomValidationException e) { return Script.back(e.getErrorMap().toString()); }
Java
복사
e.getErrorMap()을 넘겨주지 않아서 먹질 않은거 같다.
그래서 분기를 태워줄 소스를 추가한다.
if(e.getErrorMap() == null) { return Script.back(e.getMessage()); }else { return Script.back(e.getErrorMap().toString()); }
Java
복사
다시 사진을 추가하지않고 등록하면은
이렇게 알럿창이 뜬다
이미지가 저장되는 upload 폴더안에 사진들을 다 날려주고
다시
저장됐다.
이제 db에 데이터 한번 날려주기 위해 application.yml에서 create → update로 저장
upload 폴더 다시 비워주고 다시 회원가입 후 사진등록을 해본다

*참고