[SPRING] 사진 업로드하는 보드 만들기
list 만드는 법
1. list 만들 땐 Model 객체를 인자값으로 넣어라 진짜
그래야 SELECT해 온 값을 list.jsp로 보내겠지
2. service.list()에서 가져온 값을 ArrayList에 담는데 데이터 타입은 <BoardDTO>
변수도 정함
3.model.addAttribute("저장할 이름",저장할 값) 해서 저장
4. list.jsp로 보내
write 만드는 법
1. method는 post로
2. 인자값으로는 photo, 그리고 hashmap(@requestparam필요)
hashmap????? 왜냐면 key와 value 두 가지가 있잖아
3. controller에서는 별별거안하고 service.write()로 인자값들 태워서 보내줘
detail 만드는 법
1. 인자값에 model객체와 idx (detail.jsp로 보내야되니까 model 필요하겠지 그리고 write에서 idx값 구했으니까 idx활용해서 값들 가져올거임)
2.
delete하는법
controller의 인자값으로는?????????? 무조건 idx가 필요하겠지 그게 있어야 지우든 만든 할거아냐
1. findFile 해서 업로드 된 파일을 구해서 newFileName에 넣어줌
2. 업로드된 파일이 없으면? dao.delete를 통해 bbs를 삭제함(dbeaver에서 on delete cascade를 걸어놨어서 자동으로 photo 테이블에 있는 값도 삭제됨)
3. 만약 파일이 있어서 삭제가 되었으면 row가 0보다 클 것임
4. newFileName에 값이 있으면 (업로드 된 파일이 있으면) && row(업데이트된 항목)이 0보다 크면(파일이 있어서 삭제가 됐으면) 폴더에 있는 파일도 삭제해줘야함
5. 파일의 경로 가져와서("C:/img/upload/"+ newFileName) file 객체에 객체화해주고
만약 file이 존재하면 file.delete() 메서드를 통해 지워줌
public void delete(String idx) {
//1.photo에 해당 idx값이 없는지
String newFileName = dao.findFile(idx);
logger.info("file name: "+newFileName);
//2. 없다면? 처리
int row = dao.delete(idx);
logger.info("delete data : "+ row);
//3. 있다면? 처리
if(newFileName != null) {
//1. bbs와photo가 확실히 삭제되었는지 확인
if(row>0) {
File file = new File("C:/img/upload/"+ newFileName);
if(file.exists()) {//2. 삭제 후 해당 파일이 존재하는지?확인
file.delete();//3. 존재하면? 삭제
}
}
}
}
update하는 법
1. update 메서드의 파라메터로 필요한 것은 MultipartFile photo와 params
2. page의 기본 값은 list.do로 해둠
3. update할 항목을 정해주기 위해 params에서 idx값을 가져옴 그리고 idx에 넣어줌
4. dao.update(idx)실행해줌
5. 만약 photo.getOriginalFilename()해서 가져온 값이 null이라면 (업로드된 파일이 없다면)
fileSave메서드 실행1012
public String update(MultipartFile photo, HashMap<String, String> params) {
String page = "redirect:/list.do";
int idx = Integer.parseInt(params.get("idx"));
// 1. 업데이트 실행
int row = dao.update(params);
//2. photo에 파일명이 존재한다면?
if(!photo.getOriginalFilename().equals("")) {
fileSave(idx, photo);
}
if(row>0) {
page="redirect:/detail.do?idx="+idx;
}
return page;
}