Hello

파일 업로드

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

볼빵빵오춘기

활동하기