본문 바로가기
업무 기록/API

Spring API 이미지 자동 삭제

by code2772 2023. 6. 18.

[ 목차 ]

    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분으로 설정하고 테스트를 실시하였으며 콘솔창에 잘 찍혔으며 자동으로 로컬에 저장된 내용들도 삭제도었다.

    반응형