728x90
반응형
참고 사항
하기 내용을 실습하게 되면, 게시판 구현하기 15를 실습할 때 문제가 생길 수 있습니다.
존재하는 게시글에 파일을 추가하기 위해 boardDetail.html 내 form 태그에 enctype을 설정하였는데, 이 부분이 추후 RESTful로 변경할 때에 POST로만 form을 사용할 수 있는 문제를 일으킵니다. 따라서, 아래 내용은 참고만 하면 좋겠습니다.
들어가기 전에
하기 포스팅은 "스프링부트 시작하기(김인우 저)"를 공부하며 만든 springboot 프로젝트 내에 추가로 구현한 부분에 대해 적은 글입니다. 잘못된 부분이 있을 수 있으니 참고만 해주시면 좋을 것 같습니다.
"스프링부트 시작하기" 책에는 신규 게시글을 만들 때 파일 업로드만 가능하여, 기존에 업로드한 게시글에 파일을 추가하는 것에 대해 알아볼 것입니다.
뷰 변경하기
...
<form id="frm" method="post" enctype="multipart/form-data">
...
<input type="hidden" name="boardIdx" th:value="${board.boardIdx}">
<input type="file" id="files" name="files" multiple="multiple">
</form>
...
- 게시글 생성 시 파일 업로드할 수 있도록 boardWrite.html을 수정했던 것과 같이 boardDetail.htm의 form의 enctype을 multipart/form-data로 변경하고, file 타입의 input 태그를 추가합니다.
컨트롤러 영역
...
@RequestMapping("board/updateBoard.do")
public String updateBoard(BoardDto board, MultipartHttpServletRequest multipartHttpServletRequest) throws Exception {
boardService.updateBoard(board, multipartHttpServletRequest);
return "redirect:/board/openBoardList.do";
}
...
- 기존에 생성했던 updateBoard 메소드의 파라미터를 수정합니다. MultipartHttpServletRequest 클래스를 사용하여 파일 업로드 시 사용할 수 있도록 했습니다.
서비스 영역
// BoardService.java
...
void updateBoard(BoardDto board, MultipartHttpServletRequest multipartHttpServletRequest) throws Exception;
...
// BoardServiceImpl.java
...
@Override
public void updateBoard(BoardDto board, MultipartHttpServletRequest multipartHttpServletRequest) throws Exception {
boardMapper.updateBoard(board);
List<BoardFileDto> list = fileUtils.parseFileInfo(board.getBoardIdx(), multipartHttpServletRequest);
if(CollectionUtils.isEmpty(list) == false) {
boardMapper.insertBoardFileList(list);
}
}
...
- 기존 updateBoard 메소드의 파라미터를 변경했습니다.
- 파일 업로드 관련해서는 insertBoard 메소드와 동일하게 작성했습니다.
매퍼, 쿼리 영역
이번 포스팅에서는 기존에 게시글 생성 시 파일 업로드하는 쿼리를 재활용했기 때문에 mapper나 SQL을 따로 수정하지 않습니다.
게시글 수정 시 파일 추가 결과 확인하기
먼저, 기존에 존재하던 게시글에 접근하여 파일 선택을 누릅니다. 그 후 특정 파일을 선택한 후, 수정하기 버튼을 클릭하면 아래와 같이 수정된 게시글에 파일이 업로드됨을 확인할 수 있습니다.
기존과 동일하게 게시글을 수정하면, 게시글 목록 화면으로 되돌아갑니다.
728x90
반응형
'FRAMEWORK > Spring' 카테고리의 다른 글
[SpringBoot] 게시판 구현하기 16 (REST API로 변경하기) (0) | 2021.01.01 |
---|---|
[SpringBoot] 게시판 구현하기 15 (RESTful 게시판 만들기) (0) | 2021.01.01 |
[SpringBoot] 게시판 구현하기 13 (파일 삭제하기) - 책 응용편 (0) | 2020.12.31 |
[SpringBoot] 게시판 구현하기 12 (파일 업로드와 다운로드) (4) | 2020.12.27 |
[SpringBoot] 게시판 구현하기 11 (스프링의 다양한 기능 살펴보기 - 예외처리) (0) | 2020.12.27 |