(맥락)
파일 업로드 & 이미지 등록
-
(스트럭쳐)
M ItemImg -> Item (LAZY)
ItemImgDto
ItemFormDto
ItemController
아이템폼 뷰
프로퍼티 + 컨피겨
파일서비스 : upload + delete
ItemImgRepository
ItemImgService
ItemService
-
(semiflow 20)
아이템이미지 엔티티 내부에 업데이트이미지 메소드가 들어간다
modelMapper : 서로 다른 클래스의 값을 필드이름,자료형이 같으면 getter setter를 통해 복사 후 객체 반환
modelMappe는 의존성 추가해서 사용
엔티티를 넣어서 DTO를 반환한다.
아이템 자체를 반환하기도 한다
ItemImgDto 내에 ModleMapper static으로 객체 생성
ItemImgDto를 반환하는 메서드 생성
ItemFormDto에는 List<ItemImgDto> 와 List<Long> itemImgIds가 들어간다.
그리고 모델매퍼 + createItem + ItemFormDto 메서드가 들어감
아이템서비스에서 아이템이미지서비스를 같이 이용한다
File 역시 참조형식이며, 인스턴스.delete()로 기존 파일을 삭제할 수 있다.
log.info("파일을 삭제하였습니다.") 로 출력한다
fos.write(fileData); 후 fos.close();
FileOutputStream fos = new FileOutputStream(fileUploardUrl);
파일서비스는 파일만
아이템이미지서비스는 파일서비스를 업로드 후 이미지 정보를 갖고온다
그리고 ItemImg엔티티에 업데이트이미지(이미지 원래이름 + 이미지이름 + 경로)후 itemImgRepository에 이미지 저장
아이템서비스는 DTO에서 이미지 없는 아이템만 우선 리포지토리에 저장
그 후 이미지 슬롯을 만들어 이미지->셋아이템을 해주고
아이템이미지서비스에 세이브아이템이미지
-
-----------------(기능)-----------------
(아이템폼 뷰)
스크립트 -> 에러 : alert / 이미지 파일인지 validation / Jquery .html 사용해서 파일명 입력
form method="post" 에는 enctype으로 multiparte/form-date(모든 문자를 인코딩하지 않게)
타임리프 select로 상품상태 설정 -> 판매중 / 품절 showing
itemImgDtoList empty여부에 따라서 다르게 보여주기
itemFormDto.id 여부에 따라 저장 / 수정 버튼 변화
-
(프로퍼티)
어드민 계속 사용위해 dll -> 밸리데이트에서 크리에이트로 변경
파일 사이즈 / 크기 / 이미지 업로드 경로 / 리소스 업로드 경로 추가
WebMvcConfig에서 @value와 리소스핸들러(컴퓨터 내부 파일 업로드)
-
(파일서비스)
URL = 업로드패스 + 저장파일네임'
저장파일네임 = UUID + original;
오리지널 = 끝