<body>
<h1 align="center">${board.boardNo }번 게시글 수정하기</h1>
<br><br>
<form action="/board/modify.kh" method="post" enctype="multipart/form-data">
<input type="hidden" name="boardNo" value="${board.boardNo }">
<input type="hidden" name="boardFilename" value="${board.boardFilename }">
<input type="hidden" name="boardFileRename" value="${board.boardFileRename }">
<table align="center" border="1">
<tr>
<td>제목</td>
<td><input type="text" name="boardTitle" value="${board.boardTitle }"></td>
</tr>
<tr>
<td>작성자</td>
<td><input type="text" name="boardWriter" value="${board.boardWriter }" readonly></td>
</tr>
<tr>
<td>내용</td>
<td><textarea cols="30" rows="7" name="boardContents" >${board.boardContents }</textarea></td>
<!--textarea는 value이 없어서 태그사이에 값으로 넣어준것임. -->
</tr>
<tr>
<td>첨부파일</td> <!--첨부파일에는 value값이 없다 -->
<td><input type="file" name="reloadFile" >
<a href="#">${board.boardFilename }</a>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="수정">
<a href="/board/list.kh">목록으로</a>
<a>이전 페이지로</a>
</td>
</tr>
</table>
</form>
</body>
게시글 수정하기....그중 포인트는 첨부파일이다.
처음 등록할때 name이 uploadFile이였는데 수정안해서 오류 발생했다....
public ModelAndView boardModify(@ModelAttribute Board board
,ModelAndView mv
, @RequestParam(value="reloadFile",required=false)MultipartFile reloadFile //위에서 upload였는데 여기선 reloadFile로 변경
, HttpServletRequest request) {
try {
String boardFilename=reloadFile.getOriginalFilename();
if(reloadFile !=null && !boardFilename.equals("")) {
//파일 이 있거나, 파일명이 있을때
// 수정방법 = 1, 대체 2, 삭제 후 저장 ==>삭제후 저장이 오히려 편함
//파일 경로를 알아야 한다. 리케스트 필요 httpHttpServletRequest request
//파일 삭제
String root=request.getSession().getServletContext().getRealPath("resources");
String savedPath = root + "\\buploadFiles";
// 파일이름을 갖고 오고자 db로 갈필요는 없음. 이 jsp에 board 자료가 있음
File file= new File(savedPath+"\\"+board.getBoardFileRename());//file.io
if(file.exists()) { //파일이 정말 있는지 확인
file.delete(); //파일 지움
}
//삭제 했으니깐 다시 저장
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
String boardFileRename=sdf.format(new Date(System.currentTimeMillis()))+"."
+boardFilename.substring(boardFilename.lastIndexOf(".")+1);
//substring 때문에 1을 더한것임
//lastIndexOf(".")은 파일.뒤의 확장자 구하는 것이다.
String boardFilepath=savedPath+"\\"+boardFileRename;
reloadFile.transferTo(new File(boardFilepath));
board.setBoardFilename(boardFilename);
board.setBoardFileRename(boardFileRename);
board.setBoardFilepath(boardFilepath);
}
int result=bService.modifyBoard(board);
mv.setViewName("redirect:/board/list.kh");
}catch(Exception e) {
mv.addObject("msg", e.toString()).setViewName("common/errorPage");
}
return mv;
param으로 첨부파일 가져올때 명칭 조심!
파일삭제할때 위치한 폴더는 getRealPath("resources")인가보다....타이핑 치다보면 계속 놓친다.
파일 저장은 위에서 복사 넣기 인데 여기서 필요 없는 부분도 많으니깐 잘 보고 가져오기!!!
<update id="updateBoard">
UPDATE BOARD_TBL SET BOARD_TITLE=#{boardTitle}, BOARD_CONTENTS=#{boardContents},
BOARD_FILENAME=#{boardFilename},BOARD_RENAME=#{boardFileRename},
BOARD_FLIEPATH=#{boardFilepath} , B_UPDATE_DATE=DEFAULT WHERE BOARD_NO=#{boardNo}
</update>
매핑 할때 오타와 기호 조심///////, 빼먹었더니........난리다 난리....
이렇게 첨부파일 수정하였음