업무 기록/API

Spring API 이미지 자동 삭제

code2772 2023. 6. 18. 15:14
728x90
반응형

1년간 보관 - 1년 후 삭제

 

  • 기간 설정
private long getOneYearInMills() {
	final int millisecondsInSecond = 1000;
	final int secondsInMinute = 60;
	final int minutesHour = 60;
	final int hoursInDay = 24;
	final int daysInYear = 365;
	
	return millisecondsInSecond * secondsInMinute * minutesHour * hoursInDay * daysInYear;
}

getFiveMinutesInMills 메소드 생성, 1년을 밀리초로 변환하여 반환하는 메서드이다.

 

  • 저장/삭제 예약
	private void saveAndScheduleDeletion(String filename,  String type) {
		saveToAPI(filename, type);
		System.out.println("Scheduling deletion for file : " + filename);
		String storagePath = determineStoragePath(type);
		scheduleFileDeletion(filename,storagePath, getFiveMinutesInMills());
	}

API에 저장된 후, 일정 시간이 경과한 후에 자동으로 삭제될 수 있도록 처리한다.

 

  • 파일, API 삭제 예약 실 메서드
// 주어진 파일 이름과 저장 경로, 지연 시간을 이용하여 파일 삭제 작업 예약
private void scheduleFileDeletion(String filename, String storagePath, long delayInMillis) {
    TimerTask task = new TimerTask() {
        public void run() {
            // 로컬 파일 삭제
            String filePath = UPLOAD_DIRECTORY + storagePath + "/" + filename;
            File file = new File(filePath);
            
            // 파일이 존재하는지 확인
            if (file.exists()) {
                // 로컬 파일 삭제 시도
                if (file.delete()) {
                    System.out.println("Local File Delete Success: " + storagePath);
                } else {
                    System.out.println("Local File Delete Failed: " + storagePath);
                }
            } else {
                System.out.println("Local File already deleted: " + storagePath);
            }
            
            // API 파일 삭제
            File apiFile = new File(filename);
            
            // 파일이 존재하는지 확인
            if (apiFile.exists()) {
                // API 파일 삭제 시도
                if (apiFile.delete()) {
                    System.out.println("API File Delete Success: " + filename);
                } else {
                    System.out.println("API File Delete Failed: " + filename);
                }
            } else {
                System.out.println("API File already deleted: " + filename);
            }
        }
    };

    Timer timer = new Timer();
    timer.schedule(task, delayInMillis);  // 주어진 시간 후에 작업 실행
}

위의 코드는 주어진 파일 이름과 저장 경로, 그리고 지연 시간을 이용하여 파일 삭제 작업을 예약하는 메서드이다. 예약된 작업이 실행되면 해당 파일을 로컬 및 API에서 삭제한다.

 

  • 삭제 후 콘솔 창 모습

 

test를 위해 1년이 아닌 1분으로 설정하고 테스트를 실시하였으며 콘솔창에 잘 찍혔으며 자동으로 로컬에 저장된 내용들도 삭제도었다.

반응형