[SpringBoot]파일 삭제

Glen(OH TaekJoo)·2024년 2월 25일
0

Study

목록 보기
53/53

자바 지정된 경로의 파일 삭제 .

 //--------------------회사 문서 삭제---------------------//
    @GetMapping("/admin/companyFile/delete/{id}")
    public ResponseEntity<String> companyFileDelete(@PathVariable("id")String id){
        CompanyFile companyFile = this.companyFileService.getCompanyFile(id);
        String fileUrl = companyFile.getFileUrl();

        if (fileUrl != null && !fileUrl.isEmpty()) {
            try {
                // 파일 경로를 사용하여 Path 객체 생성
                Path filePath = Paths.get("static", fileUrl);

                // 파일이 존재하면 삭제
                if (Files.exists(filePath)) {
                    try {
                        Files.delete(filePath);

                        // 파일 삭제 성공
                        this.companyFileService.companyFileDelete(companyFile);
                        return ResponseEntity.ok("문서 및 파일이 삭제되었습니다.");
                    }catch (Exception e){
                        return ResponseEntity.ok(e+"삭제실패 오류");
                    }
                    // 파일 삭제 시도

                } else {
                    // 파일이 존재하지 않음
                    return ResponseEntity.ok("파일을 찾을 수 없습니다. (상대 경로: " + fileUrl + ")");
                }
            } catch (Exception e) {
                // 예외 발생 시
                e.printStackTrace(); // 디버깅을 위해 이 줄을 추가합니다.
                return ResponseEntity.ok("파일 삭제 중 오류 발생");
            }
        } else {
            // fileUrl이 비어있는 경우
            return ResponseEntity.ok("유효한 파일 경로가 없습니다.");
        }



    }

데이터(CompanyFile) 의 구조는

{
  "_id": {
    "$oid": "65db36eb945174317c1107db"
  },
  "fileName": "테스트이미지",
  "createDate": {
    "$date": "2024-02-24T15:00:00.000Z"
  },
  "fileUrl": "/file/companyFile/08596daeeb1c.jpg",
  "_class": "com.example.attendance.entity.CompanyFile"
}

위 처럼 되어있다.

파일의 실제경로는 프로젝트폴더/static/file/companyFile/파일이름 이 경로에 저장되어 있으며

경로는 fileUrl 필드에 저장하였다.

if (fileUrl != null && !fileUrl.isEmpty()) {
            try {
                // 파일 경로를 사용하여 Path 객체 생성
                Path filePath = Paths.get("static", fileUrl);

위부분에서 Path(경로) 를 지정하여 해당 경로를 기준으로 삭제를 진행하였다.

Path filePath = Paths.get( fileUrl);

처음 작성시엔 get 안에 매개변수로 fileUrl 만 넣었더니 경로를 찾지 못하여 삭제가 불가능 하였다.

first 로 "static" 상위폴더를 지정해줘야 정상적으로 파일을 찾아 삭제했다.

profile
병아리 개발자 의 우당탕탕 성장기

0개의 댓글