게시판13) 글 수정시 파일 변경
in Web Dev on Java Spring
boardUpdate.jsp
update를 하는 파일의 form태그에도 enctype= “multipart/form-data”를 추가해준다.
name을 “upload”로 준다. 그럼 form이 제출될 때, boardupdate 메소드로 “upload”변수와 그 변수값인 파일을 parma으로 받을 수 있게된다.
<form id ="" action ="boardupdate" method = "POST" enctype = "multipart/form-data"> <tr> <th>첨부파일</th> <td><input type= "file" name="upload"></td> </tr> </form>
boardController.java
- 흐름을 먼저 본다면,
현재 수정하는 board 객체를 받는다.
board 객체에 savedfile이 있는지 확인한다.
savedfile이 없으면, 바로 newsavedfile 을 board에 set해주고,
savedfile이 있으면, 서버에 있는 파일을 지워주고 newsavedfile을 board에 set해주고, 서버에 저장한다.
- 기존 board 객체를 재사용하지 않고, 새 객체를 만들었으므로 userid를 set해준다.
- repository.boardUpdate(board);를 해 업데이트를 완료한다.
@RequestMapping(value = "/boardupdate", method = RequestMethod.POST)
public String boardUpdate(Model model, Board board,MultipartFile upload, HttpSession session) {
Board oldBoard = repository.boardDetail(board.getBoardseq());
String savedfile = oldBoard.getSavedfile();
//수정할 때 파일을 서버에서 지웠다가 다시 쓴다. 왜냐면 이름은 같아도 다른 파일일 수도 있기 때문에 코드내에서 판별하기 좀 그럼.
if(savedfile!= null) {
String fullpath = uploadPath + "/" + savedfile;
File file = new File(fullpath);
//파일 삭제는 간단하네.
if(file.isFile()) {
file.delete();
}
}
String newsavedfile = saveFile(upload);
//upload는 수정폼에서 첨부된 파일
if(upload.getSize()!=0) {
//서버에서 넘길 때 파일이름을 넘기는게 아니라 파일 자체를 upload로 넘긴다.originalfile 변수를 jsp 쪽에서 넘기지 않아서 이렇게 여기서 set해줘야한다.
String originalfile = upload.getOriginalFilename();
board.setOriginalfile(originalfile);
board.setSavedfile(newsavedfile);
}
String userid = (String)session.getAttribute("loginId");
board.setUserid(userid);
int result = repository.boardUpdate(board);
return "redirect:boardlist";
}
boardMapper.xml
- 만약 originalfile과 savedfile이 null 이 아닐 경우 , DB에 같이 update해준다.?? –> 틀린듯? 만약 기존 글에서는 파일이 있었는데 이번글에서는 파일을 삭제했다면 null 이 되여아하니까…! if문을 빼야지 맞을 것 같다.
<update id = "boardUpdate" parameterType = "Board">
UPDATE
board
SET
title = #{title}
, message = #{message}
,regdate = sysdate
<if test="originalfile!=null and savedfile !=null">
,originalfile = #{originalfile}
, savedfile = #{savedfile}
</if>
WHERE
boardseq = #{boardseq}
</update>
◇ Spring 게시판 포스팅 시리즈 ◇
- Spring 과 DB 연결하기
- 회원 가입 화면 구성
- ID 중복 확인 하기
- 로그인 페이지 만들기
- 게시판 화면 구성하기
- 글 쓰기 기능 구현
- 글 확인 기능 구현
- 글 수정 기능 구현
- 게시판 페이징
- 파일 첨부 기능
- 파일 다운 기능
- MIME 타입
- 글 수정시 파일 변경 - 현재 글