[SpringBoot] 게시판 구현하기 14 (존재하는 게시글에 파일 추가하기) - 책 응용편
FRAMEWORK/Spring

[SpringBoot] 게시판 구현하기 14 (존재하는 게시글에 파일 추가하기) - 책 응용편

반응형

참고 사항

하기 내용을 실습하게 되면, 게시판 구현하기 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을 따로 수정하지 않습니다.

게시글 수정 시 파일 추가 결과 확인하기

먼저, 기존에 존재하던 게시글에 접근하여 파일 선택을 누릅니다. 그 후 특정 파일을 선택한 후, 수정하기 버튼을 클릭하면 아래와 같이 수정된 게시글에 파일이 업로드됨을 확인할 수 있습니다.

기존과 동일하게 게시글을 수정하면, 게시글 목록 화면으로 되돌아갑니다.

게시글 수정 시 파일 추가 결과 확인

반응형