Notice
Recent Posts
Recent Comments
Link
투케이2K
415. (ios/swift5) [Firebase Storage] 파이어베이스 스토리지 에 저장 된 특정 파일 다운로드 URL 주소 확인 - File DownLoad Url 본문
IOS
415. (ios/swift5) [Firebase Storage] 파이어베이스 스토리지 에 저장 된 특정 파일 다운로드 URL 주소 확인 - File DownLoad Url
투케이2K 2024. 3. 9. 09:03[개발 환경 설정]
개발 툴 : 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 추가
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* */
// -----------------------------------------------------------------------------------------
// MARK: - [전역 변수 선언]
// -----------------------------------------------------------------------------------------
private static let ACTIVITY_NAME = "C_FirebaseStorageService"
// -----------------------------------------------------------------------------------------
// MARK: - [SEARCH FAST] : [Observable] : [File DownLoad Url] : 특정 파일 다운 로드 URL 확인
// -----------------------------------------------------------------------------------------
func observableFileDownUrl(filePath:String, fileName:String, completion: @escaping (String)->()) {
/*
// -----------------------------------------
[observableFileDownUrl 메소드 설명]
// -----------------------------------------
1. 파이어베이스 특정 파일 다운 로드 URL 확인
// -----------------------------------------
2. 호출 방법 :
// [파이어베이스 저장 경로 지정]
let filePath = "/"
let fileName = "LOG.txt"
// [메소드 호출]
C_FirebaseStorageService().observableFileDownUrl(filePath:filePath, fileName:fileName){(result) in
S_Log._F_(description: "파이어베이스 특정 파일 다운 로드 URL 확인", data: ["\(result)"])
}
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] 특정 파일 다운 로드 URL 확인 수행", data: [
"filePath :: \(filePath)",
"fileName :: \(fileName)"
])
// [널 체크]
if C_Util().stringNotNull(str: filePath) == true && C_Util().stringNotNull(str: fileName) == 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] - 특정 파일 다운 로드 URL 확인 에러", data: [
"ERROR :: \(error.localizedDescription)"
])
// [콜백 반환]
completion("")
return
}
// [result 널 체크]
if result != nil && result?.items.count ?? 0 > 0 {
var search_item:StorageReference? = nil
for item in result!.items {
// [파일 명칭 체크 확인]
if fileName == item.name.description {
// [변수에 삽입]
search_item = item
break
}
}
// [다운로드 URL 확인]
if search_item != nil {
var downUrl = ""
search_item?.downloadURL(completion: { URL, Error in
if (error != nil) {
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 특정 파일 다운 로드 URL 확인 에러", data: [
"ERROR :: downloadURL is null"
])
// [콜백 반환]
completion("")
return
}
downUrl = URL?.absoluteString ?? ""
if downUrl.hasPrefix("http") == true && downUrl.contains("firebase") == true {
// [리턴 반환 수행]
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Success] - 특정 파일 다운 로드 URL 확인 성공 [1]", data: [
"RETURN :: \(downUrl)"
])
// [콜백 반환]
completion(downUrl)
}
else {
downUrl = "https://firebasestorage.googleapis.com" + downUrl
// [리턴 반환 수행]
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Success] - 특정 파일 다운 로드 URL 확인 성공 [2]", data: [
"RETURN :: \(downUrl)"
])
// [콜백 반환]
completion(downUrl)
}
})
}
else {
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 특정 파일 다운 로드 URL 확인 에러", data: [
"ERROR :: search_item is null"
])
// [콜백 반환]
completion("")
}
}
else {
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 특정 파일 다운 로드 URL 확인 에러", data: [
"ERROR :: firebase save list is null"
])
// [콜백 반환]
completion("")
}
}
}
else {
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 특정 파일 다운 로드 URL 확인 에러", data: [
"ERROR :: Input Data Is Null"
])
// [콜백 반환]
completion("")
}
}
}
} // [클래스 종료]
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments