카테고리 없음

[Android] Firebase Storage로 파일 관리

O_Gyong 2024. 11. 12.

 

 

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

 


댓글