Spring boot/위니아에이드 클론코딩 프로젝트

[위니아에이드] 팀 프로젝트 - 게시글 수정 (파일)

코딩딩코 2022. 10. 20.

게시글을 작성하고 수정을 할 때 업로드했던 파일을 어떻게 처리할지 고민을 했습니다.

우선 게시글을 DB에서 불러올때 해당 게시글에 업로드된 파일이 존재한다면 클라이언트에 보여주고

x표시를 옆에 만들었습니다.

그리고 파일은 3개까지만 업로드 가능하게 만들었고 파일이 하나 존재한다면 한 개의 input 태그를 disabled 시켜줌으로써

비활성화를 시켜주었습니다.

 

 

x를 눌러준다면 비활성화 되었던 input 태그를 다시 원상복구 시켜주고 파일 추가를 가능하게 구현해보았습니다.

3개의 파일을 추가하고 수정을 진행합니다.

 

이제 해당 게시글은 새롭게 업데이트된 파일을 가지고 있고 다시 수정을 진행한다면

3개의 input 태그가 모두 비활성화되었습니다.

 

status = boardRepository.updateBoardByBoardCode(boardEntity) > 0;

    if(status && updateBoardReqeustDto.getDeleteFileCode().size() != 0) {
        boardRepository.deleteBoardFileByFileCode(updateBoardReqeustDto.getDeleteFileCode());

        for(String fileName : updateBoardReqeustDto.getDeleteTempFileName()) {
            fileService.deleteFileByFileNameAndPath(fileName, "board-files");

        }
    }

업데이트 로직입니다.

삭제했던 파일은 js에서 Array에 파일 키값과 파일 이름을 담을 수 있게 만들었고 그 Array를 서버로 보냅니다.

그리고 업데이트가 정상적으로 성공했고 삭제했던 파일의 개수가 1개 이상이라면

DB 데이터에 남아있는 파일 데이터도 파일 키값으로 Delete 해주고

FileService라는 인터페이스를 하나 만들고 구현체도 만들어주고 deleteFileByFileNameAndPath 메서드를 통해

내 PC에 업로드되어있는 파일 또한 삭제를 진행해 주었습니다.

 

 

 

로직을 구현함에 있어서 어려움은 생각보다 없었지만 역시 수정 화면에서는 파일을 보여주고 삭제했던 파일을

Array에 담아서 넘겨주고 이러한 과정을 생각하는 시간이 조금 걸렸던 것 같습니다.

그리고 file을 업로드도 해주고 삭제도 해주고 경로도 설정하고 UUID로 이름을 만들어 주는 과정이

길기 때문에 가독성이 떨어지는 것을 생각해서 추상화시키고 메서드 이름으로 기능을 명확히 인지하게끔 만들었고

위의 과정을 따로 처리를 해서 가독성을 조금이라도 높이려고 노력을 했습니다.

댓글