NewItem.java
if (req.getThumbnail()!=null && req.getThumbnail().getSize() > 0) {
System.out.println("업데이트된 썸네일이 있네," +
"기존걸 삭제하고ㅡ 이걸 넣자! ");
//기존 이미지 삭제
if (this.thumbnail!=null) {
System.out.println("기존 이미지 삭제할게잉 ");
deleteImages(this.thumbnail);
}
// 새로 들어온 이미지 resultImage라는 이름으로 생성
NewItemImageUpdatedResult resultImage =
findImageUpdatedResult(
req.getThumbnail()
);
// 아이템에 이 새로 들어온 이미지가 이제 니꺼야~ 라고 지정
addImages(new NewItemImage(req.getThumbnail().getOriginalFilename())); // 문제 부분
// result Image 전달
// fileUpdatedResult에 저장된 고유명 기반으로 서비스에서 진짜 멀티파일들을
// 경로에 저장해줄 예정
fileUpdatedResult =
new NewItemFileUpdatedResult(resultAttachment, resultImage);
}
근데 보면 문제 부분에서 new 로 새 인스턴스로 생성해주고 있네?? 이미 resultImage 안에서 존재하게 해주었는데??
new로 새 인스턴스 생성하면 결국 고유명도 새로 생성됨
따라서 addImages
를 통해 아이템 이미지가 저장돼있다고 뜨는 고유명과, fileUpdatedResult
를 통해 실제 파일 경로에 저장된 고유명이 다르게 됨
addImage에서 저장한 고유명으로 나는 프론트에 전달해주는데, 사실상 fileUpdatedResult 에 저장된 고유명으로 경로에 저장되어있으니 찾을 수가 없지~~ 참나 ~~
if (this.thumbnail!=null)
) {
//기존 이미지 삭제
deleteImages(this.thumbnail);
}
NewItemImageUpdatedResult resultImage =
findImageUpdatedResult(
req.getThumbnail()
);
this.thumbnail = resultImage.getAddedImages();
// 새로 인스턴스 생성하는게 아니라, resultImage 에서 사용하는 것으로 통일해줘야지.
addImages(resultImage.getAddedImages());
fileUpdatedResult =
new NewItemFileUpdatedResult(resultAttachment, resultImage);
왜 안되는지 거의 30번 정도 이미지 테스트를 하면서 도움을 많이 줬던 강아지 사진을 첨부하며 기분 좋게 마무리