Notice
Recent Posts
Recent Comments
Link
투케이2K
413. (ios/swift5) [Firebase Storage] 파이어베이스 스토리지 버킷에 파일 저장 수행 - File Upload 본문
IOS
413. (ios/swift5) [Firebase Storage] 파이어베이스 스토리지 버킷에 파일 저장 수행 - File Upload
투케이2K 2024. 3. 8. 20:25[개발 환경 설정]
개발 툴 : 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..
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* 참고 사이트 (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] : [Save File] : 특정 파일 Storage 에 저장
// -----------------------------------------------------------------------------------------
func observableStorageSaveFile(filePath:URL, fileType:String, fileName:String, completion: @escaping (Bool)->()) {
/*
// -----------------------------------------
[observableStorageSaveFile 메소드 설명]
// -----------------------------------------
1. 파이어베이스 스토리지에 특정 파일 저장 실시
// -----------------------------------------
2. 호출 방법 :
// [앱 내부에 저장 된 파일 저장소 경로 지정]
let filePath = "test"
guard let filePath = Bundle.main.path(forResource: filePath, ofType: "txt")
else {
self.showAlert(
type: 0,
tittle: S_FinalMsg.AL_TITLE_ERRPR, content: "웹뷰 로드에 정의 되지 않은 타입 입니다 (html file path is nil)",
okBtb: S_FinalMsg.AL_OK, noBtn: "")
return
}
let urlFile = URL(fileURLWithPath: filePath)
// [파이어베이스 저장 경로 및 파일 명칭 지정]
let fileType = "text/plain"
let fileName = "LOG.txt"
C_FirebaseStorageService().observableStorageSaveFile(filePath:urlFile, fileType:fileType, fileName:fileName){(result) in
S_Log._F_(description: "파이어베이스 파일 저장 결과 확인", data: ["\(result)"])
}
// -----------------------------------------
3. 파일 콘텐츠 타입 참고 :
[오디오 타입]
audio/mpeg
audio/x-ms-wma
[텍스트 타입]
text/css
text/html
text/plain
text/xml
[이미지 타입]
image/jpeg
image/png
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] 파일 저장 수행", data: [
"filePath :: \(filePath.absoluteString)",
"fileType :: \(fileType)",
"fileName :: \(fileName)"
])
// [널 체크]
if C_Util().stringNotNull(str: filePath.absoluteString) == true && C_Util().stringNotNull(str: fileType) == true && C_Util().stringNotNull(str: fileName) == true {
// [Storage 인스턴스 지정]
let storage = Storage.storage() //인스턴스 생성
// [Storage 메타 데이터 선언]
let metaData = StorageMetadata()
// [데이터 타입 지정]
metaData.contentType = "\(fileType)"
// [Storage 에 파일 업로드]
storage.reference().child("/" + fileName).putFile(from: filePath, metadata: metaData){
(metaData,error) in if let error = error { //실패
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 파일 저장 에러", data: [
"ERROR :: \(error.localizedDescription)"
])
// [콜백 반환]
completion(false)
return
}else{ //성공
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Success] - 파일 저장 성공", data: nil)
// [콜백 반환]
completion(true)
}
}
}
else {
S_Log._F_(description: C_FirebaseStorageService.ACTIVITY_NAME + " : [Firebase] [Storage] [Error] - 파일 저장 에러", data: [
"ERROR :: Input Data Is Null"
])
// [콜백 반환]
completion(false)
}
}
}
} // [클래스 종료]
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments