파일첨부_파일 로컬에 저장하기
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 {
// 생략
}
'강의 따라하기 > member2' 카테고리의 다른 글
파일첨부_게시글 및 파일이름 DB 저장 처리 (0) | 2023.12.29 |
---|---|
파일첨부_파일이름 저장 Entity 설계 및 참조관계 (0) | 2023.12.29 |
파일첨부_첨부파일 요청보내기 (0) | 2023.12.29 |
파일첨부_파일첨부 기능 소개 (0) | 2023.12.29 |
게시글 페이징_페이징 화면 처리 (0) | 2023.12.29 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기