[Android] Firebase Storage로 파일 관리

2024. 11. 12. 23:14·Android/Firebase
반응형

 

 

Android에서 Cloud Storage 시작하기  |  Cloud Storage for Firebase

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Android에서 Cloud Storage 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Cloud Storage

firebase.google.com

Firebase Cloud Storage는 문서, 사진 등의 콘텐츠를 저장할 수 있는 객체이다. 이미지를 업로드하고 다운로드할 수도 있고, 앱을 사용하는 중에 특정 시점의 로그가 필요한 경우 파일 형태로 만들어서 확인해 볼 수도 있다.


Firebase 설정

Cluad Storage를 설정하는 부분에서 allow read, write: if false로 설정하게 되면 설명란에 적힌 대로 모든 타사 읽기 및 쓰기가 거부된다. 외부에서의 접근을 허용하려면 이 부분을 변경해야 한다.

 

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if true
    }
  }
}

위와 같이 변경하면 외부에서의 접근이 허용된다. 추후 변경이 필요할 경우 Storage의 규칙 란에서 변경이 가능하다.


기본 버킷 생성 중 데이터를 저장하기 위해 Cloud Storage 위치를 설정하는 항목이 나온다.

위치 정보와 관련해서는 아래에서 확인할 수 있는데, asia-northeast3가 서울 서버라고 한다.

 

Cloud Firestore 위치  |  Firebase

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Cloud Firestore 위치 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Cloud Firestore 인스턴스를

firebase.google.com


Storage에 파일 업로드 하기

Gradle에 Cloud Storage  라이브러리 종속 항목 추가

dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.5.1"))
    implementation("com.google.firebase:firebase-storage")
}

※ firebase-bom은 Firebasae 라이브러리 종속 항목들을 항상 호환되는 버전으로 맞춰준다.


FirebaseStorage 인스턴스 생성

object Firebase {
    val firebaseStorageRef = Firebase.storage.reference
}

FirebaseStorage를 사용하려면 인스턴스를 생성해야 한다. Firebasae.storage를 Cloud Storage 버킷에 접근한다. 이후 Storage를 사용할 수 있다. 인스턴스 생성 후 Storage를 사용할 수 있게 되었지만 Storage에 접근하여 파일을 업로드하거나 다운로드 등을 하려면 참조가 필요하다. reference(getReference())를 호출하여 참조를 만든다.


파일 업로드하기

viewModel.logFile.observe(viewLifecycleOwner) {
    if(it == null) return@observe

    try {
        file = it
        filePath = "logs/${getCurrentToday()}/${file?.name}"

        Firebase.firebaseReference
            .child(filePath)
            .putFile(Uri.fromFile(file))
            .addOnProgressListener {
                Toast.makeText(requireContext(), "로그 전송 중...", Toast.LENGTH_SHORT).show()
            }
            .addOnCompleteListener {
                Toast.makeText(requireContext(), "로그 전송 완료", Toast.LENGTH_SHORT).show()
            }
            .addOnFailureListener {
                Toast.makeText(requireContext(), "로그 전송 실패", Toast.LENGTH_SHORT).show()
            }
    } catch (e: Exception) {
        // 전송할 파일이 없는 경우
        if (e.cause == null && e.message == "file") {
            Toast.makeText(requireContext(), "전송할 로그가 없음.", Toast.LENGTH_SHORT).show()
        } else {
            Toast.makeText(requireContext(), "로그 전송 실패", Toast.LENGTH_SHORT).show()
        }
    }
}

putFile() 메서드를 사용하면 사진, 영상 등의 로컬 파일을 업로드할 수 있다. putFile은 UploadTask를 반환하는데, UploadTask는 업로드를 관리하고 그 상태를 모니터링할 수 있다. UploadTask의 함수를 사용하여 로딩, 실패, 완료 처리를 해 보았다.

 

이외 업로드 관련 내용은 아래에서 확인할 수 있다.

 

Android에서 Cloud Storage로 파일 업로드  |  Cloud Storage for Firebase

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Android에서 Cloud Storage로 파일 업로드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Cloud S

firebase.google.com

 


반응형

'Android > Firebase' 카테고리의 다른 글

[Android] Firebase Crashlytics로 비정상 종료 확인하기  (0) 2024.08.28
'Android/Firebase' 카테고리의 다른 글
  • [Android] Firebase Crashlytics로 비정상 종료 확인하기
O_Gyong
O_Gyong
안드로이드 기술 정리
  • O_Gyong
    O_Gyong's TECH
    O_Gyong
    • 분류 전체보기 (81)
      • Android (58)
        • ADB (4)
        • Architecture (1)
        • Data (5)
        • Firebase (2)
        • Network & Connecting (4)
        • Security & Privacy (3)
        • UI (24)
        • 기타 (3)
        • 이슈 처리 (14)
      • Android Studio (5)
      • Git (3)
      • 작업 일지 (13)
  • 최근 글

  • 인기 글

  • 태그

    Kotlin
    webview
    paging
    firebase
    issue
    CalendarView
    loading
    Pagination
    github
    Android Studio
    compose
    Andoird
    hilt
    SharedPreferences
    ADB
    MQTT
    in-app update
    BLE
    TabLayout
    recyclerview
    CameraX
    Bluetooth
    Navigation
    Paging3
    해상도
    Room
    flow
    Android
    kizitonwose
    GIT
  • 링크

    • GitHub
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.4
O_Gyong
[Android] Firebase Storage로 파일 관리
상단으로

티스토리툴바