[TIL] Firebase시리즈 - 2. Firebase Storagy

박봉팔·2024년 2월 28일
0

Firebase Storagy

FirebaseStorage는 이미지와 영상을 저장할 수 있는 원격 저장소로 이미지를 업로드하고 해당 이미지의 URI를 받아올수 있다.

나중에 알아봐야할 Firestore에는 이미지를 업로드 할 수 없기 때문에 Storage에 이미지를 업로드하고 URI를 받아서 저장하는 방식을 사용해야했다.


Firebase에서 Storage 시작하기를 통해 새로운 Storage를 생성한다.

이전에 설명했던 Authentication의 경우에는 아무런 제약없이 생성후 바로 사용이 가능했지만,
Storage의 경우에는 데이터에 보안규칙을 적용해야하기 위해 보안규칙을 작성해야 사용이 가능하다.
이 보안규칙은 규칙 탭에서 언제든 수정이 가능하다.

그후 Cloud Storage의 기본위치를 asia-northeast3(서울)로 지정해준다. 완료 버튼을 클릭하면 Storage가 생성된다.

웹상에서 파일을 직접 업로드 할 수 있으며, 앱에서 코드를 사용해 업로드 하는 방식을 사용할 수도 있다.


Storage 객체 생성

안드로이드 스튜디오에서 Firebase.storage를 선언해 Storage객체를 생성해 준 뒤 .reference메서드를 사용해 레퍼런스 객체를 불러온다.

    private val storage by lazy { Firebase.storage }
    private val storageRef by lazy { storage.reference }

이미지 업로드

우선 Storage Reference.child메서드를 사용해 이미지가 저장될 Reference를 생성해준다. 이때 레퍼런스의 이름이 될 pathString을 입력해 이미지별로 다른 저장공간을 생성할 수 있다.

auth를 사용해 각 유저의 고유 uid와 업로드한 시간을 조합하면 이미지별로 겹치지 않는 고유한 이름을 생성할 수 있기에 해당 방식을 사용해 이미지별로 다른 Reference에 저장될 수 있도록 코드를 구성했다.

    val fileName = SimpleDateFormat("yyyyMMddHHmmss").format(Date())
    val pathString = "${uid}${fileName}.png"
	val imageRef = storageRef.child(pathString)

안드로이드 내에서 Intent나 다른 방법을 통해 이미지 Uri 를 불러올 경우 위에서 생성한 Image Reference.putFile메서드를 사용해 해당 Uri를 입력해준다.

Firebase auth와 같이 .addOnCompleteListener { ... }로 성공 실패시의 task별로 로직을 따로 분리할 수 있다.


이미지 Uri 가져오기

이미지가 성공적으로 Strage에 업로드되면 해당 이미지의 Uri를 받아올 수 있다.
Storege에 저장된 해당 이미지의 Reference가져온뒤 .downloadUrl메서드를 사용하면 해당 이미지의 Uri를 가져오는게 가능하다.

	val imageRef = storageRef.child(pathString)
	
    imageRef.downloadUrl

오늘은 어땠나요?

진짜.. 잠은 언제자...?
(캠프 끝나고!)

profile
개발 첫걸음! 가보자구!

0개의 댓글