@3/22/2023
문제
•
게시글 삭제 시 cascade 옵션에 의해 DB에서 삭제는 되지만 파일 저장소의 첨부파일은 그대로 남아있음
FileManager
public void deleteFiles(List<UploadFile> uploadFiles) throws IOException {
for (UploadFile uploadFile : uploadFiles) {
deleteFile(uploadFile);
}
}
public void deleteFile(UploadFile uploadFile) throws IOException {
File file = new File(filePath + uploadFile.getStoredFileName());
Files.deleteIfExists(file.toPath());
}
Java
복사
PostService
@Transactional
public void deletePost(Long postId, User user) throws IOException {
Post post = findPostById(postId);
if (post.getUser().getId() == user.getId() || user.getRole() == Role.ADMIN) {
fileManager.deleteFiles(post.getUploadFiles());
postRepository.delete(postId);
} else {
throw new IllegalStateException("게시글을 삭제할 권한이 없습니다.");
}
}
Java
복사
위처럼 서비스 계층에서 게시글 삭제 시 파일도 같이 삭제해줌