자바 지정된 경로의 파일 삭제 .
//--------------------회사 문서 삭제---------------------//
@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" 상위폴더를 지정해줘야 정상적으로 파일을 찾아 삭제했다.