카테고리 없음

이미지 파일

서버관리자 페페 2024. 4. 13. 13:38

(맥락)

파일 업로드 & 이미지 등록

 

-

 

(스트럭쳐)

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;

오리지널 = 끝