Hello

파일첨부_파일 로컬에 저장하기

by 볼빵빵오춘기

Board2Service

  • 기존 작성했던 코드에서 파일 첨부 여부에 따라 if문으로 로직을 분리한다. 
  • 기존의 코드는 파일이 없는 경우로 if문에서 파일이 없는 경우에 넣어주면 되고, if문에 없는 경우 부터 넣었으니 else부분을 작성하면 된다.
  • 우선 기존에 toSaveEntity()로 넘어간다. 
    기존에 DTO와 Entity에 파일 첨부여부에 대한 부분이 없었다.
    DTO에는 파일 첨부여부값(fileAttached)을 추가하였지만 Entity에 추가하지않았기 때문에 추가해야하고 수정이 되야한다.
public void save(Board2DTO boardDTO) throws IOException {
    // 파일 첨부 여부에 따라 로직 분리
    if(boardDTO.getBoardFile().isEmpty()){
        // 첨부 파일이 없는 경우
        Board2Entity board2Entity = Board2Entity.toSaveEntity(boardDTO);
        board2Repository.save(board2Entity);
    }else{
        // 첨부 파일이 있는 경우

    }
}

 

Board2Entity

필드 추가 및 toSaveEntity()수정한다.

    @Column
    private int fileAttached; // 1 or 0 => 파일이 있으면 1 없으면 0
public static Board2Entity toSaveEntity(Board2DTO board2DTO){
    Board2Entity board2Entity = new Board2Entity();
    board2Entity.setBoardWriter(board2DTO.getBoardWriter());
    board2Entity.setBoardPass(board2DTO.getBoardPass());
    board2Entity.setBoardTitle(board2DTO.getBoardTitle());
    board2Entity.setBoardContents(board2DTO.getBoardContents());
    board2Entity.setBoardHits(0);
    board2Entity.setFileAttached(0); // 파일 없음.
    return board2Entity;
}

 

Board2Service

public void save(Board2DTO boardDTO) throws IOException {
    // 파일 첨부 여부에 따라 로직 분리
    if(boardDTO.getBoardFile().isEmpty()){
        // 첨부 파일이 없는 경우
        Board2Entity board2Entity = Board2Entity.toSaveEntity(boardDTO);
        board2Repository.save(board2Entity);
    }else{
        // 첨부 파일이 있는 경우
        /*
            1. DTO에 담긴 파일을 꺼냄
            2. 파일의 이름 가져옴
            3. 서버 저장용 이름을 만듦
            4. 저장 경로 설정
            5. 해당 경로에 파일 저장
            6. board_table에 해당 데이터 save 처리
            7. board_file_table에 해당 데이터 save 처리
         */

        MultipartFile boardFile = boardDTO.getBoardFile(); // 1
        String originalFilename = boardFile.getOriginalFilename();// 2
        String storedFileName = System.currentTimeMillis() + "_" + originalFilename; // 3
        String savePath = System.getProperty("user.dir")+"/src/main/resources/static/files/"+storedFileName; // 4
        boardFile.transferTo(new File(savePath)); // 5

    }
}

 

Board2Controller

IOException 예외 떠넘긴다. 

public String save(@ModelAttribute Board2DTO board2DTO) throws IOException {
// 생략
}

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기