보라코딩

스프링부트 파일(이미지) 수정하기!!! 본문

코딩/Spring

스프링부트 파일(이미지) 수정하기!!!

new 보라 2023. 5. 31. 10:59

파일 업로드도 고생했는데

파일 수정하기도 고생함 ^^...

그래도 해결완료!

 

 

 

 

 

update.html

우선 맨 위에 기존 이미지 한번 보여주고

 

그 아래에서 파일 업로드 할 수 있게 해놓고

 

만약 이미지 업로드 안하면 기존에 저장된 파일 hidden으로 보내게 해두었다!

 

 

 

<!--이미지 파일 관련-->
<div class="mb-3">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-card-image" viewBox="0 0 16 16">
<path d="M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/>
<path d="M1.5 2A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13zm13 1a.5.5 0 0 1 .5.5v6l-3.775-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12v.54A.505.505 0 0 1 1 12.5v-9a.5.5 0 0 1 .5-.5h13z"/>
</svg>
<label>이미지 파일명</label>

<div th:if="${storeVO.filename}" class="img_size">
<img th:src="@{|/store/${storeVO.filename}|}" class="img-fluid img_size" />
</div>

<input type="file" class="form-control" name="oriFilename" accept="image/png, image/gif, image/jpeg">


<input type="hidden" name="filename" th:value="${storeVO.filename}">

</div>

<!---->

 

 

 

 

 

 

StoreController

여긴 별거 없음

@PostMapping("/update")
public String updateStoreVO(StoreVO storeVO, MultipartFile oriFilename){

log.info("Controller storeVO : " + storeVO);
service.updateFile(storeVO, oriFilename);


return "redirect:/store/list";
}

 

 

 

 

StoreService

 

새로 가져온 파일이 없으면

기존 파일 이름을 넣어주게 했고

 

 

새로운 파일이 있다면

기존 파일을 지운 후에

새로운 파일 저장하게 했다!!!

 

 

public void updateFile(StoreVO storeVO, MultipartFile multipartFile) {


StoreVO storeVO1 = new StoreVO();
String savedName = null;


if (multipartFile.getOriginalFilename().equals("")){
//새 파일 없을때
savedName = storeVO.getFilename();

} else if(multipartFile.getOriginalFilename() != null) {

File saveFile = new File(storeVO.getFilename());

if (saveFile.exists()){
saveFile.delete();
}

String oriFilename = multipartFile.getOriginalFilename();
String uuid = UUID.randomUUID().toString();

String extension = oriFilename.substring(oriFilename.lastIndexOf("."));

oriFilename = oriFilename.substring(oriFilename.lastIndexOf("\\")+1);

savedName = uuid + "_" + oriFilename;

String savedPath = fileDir + "/" +savedName;

log.info(savedPath);

saveFile = new File(savedPath);

try {
multipartFile.transferTo(saveFile);
} catch (Exception e) {
log.error(e.getMessage());
}

}


storeVO1.setFilename(savedName);
//storeVO1.setFilename(savedPath);
storeVO1.setStoreIdx(storeVO.getStoreIdx());
storeVO1.setUserIdx(storeVO.getUserIdx());
storeVO1.setStoreName(storeVO.getStoreName());
storeVO1.setCategory1(storeVO.getCategory1());
storeVO1.setStoreAddress(storeVO.getStoreAddress());
storeVO1.setStoreLati(storeVO.getStoreLati());
storeVO1.setStoreLongi(storeVO.getStoreLongi());
storeVO1.setPhoneNumber(storeVO.getPhoneNumber());

log.info("Service 잘 변환되었나?" + storeVO1);

int result = mapper.store_update(storeVO1);
}