보라코딩
스프링부트 파일(이미지) 수정하기!!! 본문
파일 업로드도 고생했는데
파일 수정하기도 고생함 ^^...
그래도 해결완료!
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>
<!---->
<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";
}
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);
}
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);
}
'코딩 > Spring' 카테고리의 다른 글
거리순 기능 구현하기 (자바 거리 계산) (0) | 2023.05.31 |
---|---|
맛집 스타일별 정렬하기 / 별점순 / 인기순 / 거리순 구현하기 (0) | 2023.05.31 |
모달 사용 (삭제 전에 삭제하시겠습니까?) (0) | 2023.05.31 |
Day107_230531_ 프로젝트 시작한지 2주째.. 시간이 없다! (0) | 2023.05.31 |
Day106_230530_카카오페이 결제 api (ajax로, 결제 취소까지) (0) | 2023.05.30 |