파일 업로드
by 볼빵빵오춘기파일에 저장된 경로랑 컬럼이 필요하다.
board 테이블에 컬럼 추가
filename(varchar[150]), filepath(varchar[300]) 추가한다.
⇒ 이렇게 컬럼이 변경이되면 entity도 변경해줘야한다.
BoardEntity
filename, filepath 추가한다.
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
private String content;
private String filename;
private String filepath;
}
boardwrite.html
form 태그에 enctype="multipart/form-data" 추가한다.
file을 전달할 input 추가한다.
<form action="/board/writepro" method="post" enctype="multipart/form-data">
<input name="title" type="text"><br>
<textarea name="content"></textarea><br>
<input name="file" type="file"><br>
<button type="submit">작성</button>
<button type="reset">리셋</button>
</form>
files 폴더 만들기
resource > static > files 폴더 만들기(이미지가 저장될 공간이다.)
Service
- 매개변수에 MultipartFile file 추가한다.
- 저장될 경로 projectPath 변수에 담는다.
- 주석 설명 보고 작성한다.
public void write(Board board, MultipartFile file) throws Exception{
String projectPath = System.getProperty("user.dir")+"/src/main/resources/static/files"; // 이미지 저장될 경로
UUID uuid = UUID.randomUUID(); // 식별자
String fileName = uuid+"_"+file.getOriginalFilename();
File saveFile = new File(projectPath,fileName);
// 파일을 생성 (이경로에 , 이름은 이렇게 담긴다)
file.transferTo(saveFile); // Exception에 대비하라는 경고창이 뜬다.
board.setFilename(fileName);
board.setFilepath("/files/"+fileName);
boardRepositoy.save(board);
}
Controller
- 매개변수에 파일을 받아주고 Exception 대비를 위해 thorows Exception을 해준다.
- boardServie.write(board,file) 매개 변수에 파일 추가한다.
- boadrdUpdate() 도 글 쓰는 부분이니 같이 수정한다.
@PostMapping("/board/update/{id}")
public String boardUpdate(@PathVariable("id") Integer id, Board board,MultipartFile file) throws Exception{
Board boardTemp = boardService.boardView(id);
boardTemp.setTitle(board.getTitle());
boardTemp.setContent(board.getContent());
boardService.write(boardTemp,file);
return "redirect:/board/list";
}
boardView.html
<div class="layout">
<h1 th:text="${board.title}">제목</h1>
<div th:text="${board.content}">내용</div>
<a th:href="@{${board.filepath}}">다운?</a>
<a th:href="@{/board/delete(id=${board.id})}">글 삭제</a>
<a th:if="${session.loginEmail}" th:href="@{/board/modify/{id}(id=${board.id})}">글 수정</a>
</div>
'강의 따라하기 > board' 카테고리의 다른 글
검색 기능 1,2편 (0) | 2024.01.01 |
---|---|
페이징 처리 2편 (0) | 2024.01.01 |
페이징 처리 1편 (0) | 2024.01.01 |
메시지 띄우기 (0) | 2023.12.30 |
board 프로젝트 (0) | 2023.12.30 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기