투케이2K

414. (ios/swift5) [Firebase Storage] 파이어베이스 스토리지 에 저장 된 파일 목록 확인 - Get File List 본문

IOS

414. (ios/swift5) [Firebase Storage] 파이어베이스 스토리지 에 저장 된 파일 목록 확인 - Get File List

투케이2K 2024. 3. 8. 20:52

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 
 

[소스 코드]

import Foundation
import UIKit
// ----------------------------------
// MARK: - [파이어베이스 라이브러리]
// ----------------------------------
import Firebase
import FirebaseStorage
// ----------------------------------

class C_FirebaseStorageService {



    /**
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * TODO [클래스 설명]
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * 1. 파이어베이스 Storage 스토리지 관리 클래스
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * 2. 참고 사이트 (기본 Storage 설명) : https://firebase.google.com/docs/storage?hl=ko&_gl=1*1ylydtb*_up*MQ..*_ga*MTk1MzY3OTg4OS4xNzA5NzkyODU1*_ga_CW55HF8NVT*MTcwOTc5Mjg1NS4xLjAuMTcwOTc5Mjg1NS4wLjAuMA..
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * 3. 참고 사이트 (Storage 비용 설명) : https://firebase.google.com/pricing?hl=ko
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * 4. 참고 사이트 (Storage 생성 방법) : https://blog.naver.com/kkh0977/223376155889
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * 5. TODO 서비스 적용 방법 :
     *
     *  - Ios 에서 사전 파일 저장소 읽기 및 쓰기 권한 필요
     *  - 파이어베이스 콘솔 프로젝트 생성
     *  - GoogleService-Info.plist 파일 프로젝트에 추가
     *  - 파이어베이스 의존성 추가 : SPM 및 코코아팟에서 Firebase Storage 추가
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * */





    /**
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * //  TODO [빠른 로직 찾기 : 주석 로직 찾기]
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [Observable] : [Save File] : 특정 파일 Storage 에 저장
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [Observable] : [Get File List] : Storage 에 저장 된 파일 리스트 확인
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [Observable] : [File DownLoad Url] : 특정 파일 다운 로드 URL 확인
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     *
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     *
     * // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     * */
    
    
    
    
    
    // -----------------------------------------------------------------------------------------
    // MARK: - [전역 변수 선언]
    // -----------------------------------------------------------------------------------------
    private static let ACTIVITY_NAME = "C_FirebaseStorageService"





    // -----------------------------------------------------------------------------------------
    // MARK: - [SEARCH FAST] : [Observable] : [Get File List] : Storage 에 저장 된 파일 리스트 확인
    // -----------------------------------------------------------------------------------------
    func observableStorageGetFileList(filePath:String, completion: @escaping (Array<String>)->()) {
        
        /*
        // -----------------------------------------
        [observableStorageSaveFile 메소드 설명]
        // -----------------------------------------
        1. 파이어베이스 스토리지 파일 저장 목록 확인 실시
        // -----------------------------------------
        2. 호출 방법 :
         
         // [파이어베이스 저장 경로 지정]
         let filePath = "/"
         
         // [메소드 호출]
         C_FirebaseStorageService().observableStorageGetFileList(filePath:filePath){(result) in
             
             S_Log._F_(description: "파이어베이스 파일 목록 확인", data: ["\(result)"])
             
         }
         
        // -----------------------------------------
        */
        
        // [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
        DispatchQueue.main.async {
            S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] 파일 저장 목록 확인 수행", data: [
                "filePath :: \(filePath)"
            ])
            
            
            // [리턴 변수 선언]
            var returnData : Array<String> = []
            
            
            // [널 체크]
            if C_Util().stringNotNull(str: filePath) == true {
                
                // [Storage 인스턴스 지정]
                let storage = Storage.storage() //인스턴스 생성
                
                // [Storage 에 파일 업로드]
                storage.reference().child(filePath).listAll { (result, error) in
                    if let error = error {
                        S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 파일 저장 목록 확인 에러", data: [
                            "ERROR :: \(error.localizedDescription)"
                        ])
                        
                        // [콜백 반환]
                        completion(returnData)
                    }
                    
                    // [result 널 체크]
                    if result != nil && result?.items.count ?? 0 > 0 {
                        
                        for item in result!.items {
                            
                            // [리턴 배열에 추가]
                            returnData.append(item.name)
                        }
                        
                        // [리턴 반환 수행]
                        S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Success] - 파일 저장 목록 확인 성공", data: [
                            "RETURN :: \(returnData)"
                        ])
                        
                        // [콜백 반환]
                        completion(returnData)
                    }
                    else {
                        S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 파일 저장 목록 확인 에러", data: [
                            "ERROR :: firebase save list is null"
                        ])
                        
                        // [콜백 반환]
                        completion(returnData)
                    }
                }
            }
            else {
                S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 파일 저장 목록 확인 에러", data: [
                    "ERROR :: Input Data Is Null"
                ])
                
                // [콜백 반환]
                completion(returnData)
            }
            
        }
    }

    
} // [클래스 종료]
 

[결과 출력]


반응형
Comments