[TIL] firebase Storage

김영광·2026년 1월 21일

앱에서 사진, 이미지, 동영상 같은 용량이 큰 데이터를 저장하고 싶을 때는 Storage를 이용한다.
물론 firestore에도 저장이 가능하나, 저장 한도 크기가 현저히 작다.

🔎 firebase Storage 시작

storage를 사용하기 위해서는 가장 먼저 결제 수단을 설정해야 한다.
당장 돈을 내라는 건 아니고 나중에 유료로 전환하게 되면 사용할 카드를 미리 등록해야 한다.

1️⃣ image_picker로 얻어온 데이터 저장

image_picker로 얻은 데이터는 XFile? 타입이다.
해당 파일을 업로드하고 다운로드 하기 위해서는 특정 흐름을 통해 진행된다.

먼저, 업로드 시에는 imagePicker를 통해 얻은 XFile 데이터를 File 객체로 변환한다.
변환이 완료되면 Storage 객체와 저장 경로를 설정해줘야한다.
파일 이름은 중복이 되지 않게 시간값이나 특정 객체의 ID값을 전달해줘야 한다.

이후 putFile 메서드를 통해 File을 통째로 Storage에 저장할 수 있다.

특이한 점은 폴더를 직접 웹에서 생성하지 않아도, 자동으로 생성된다는 점이다.

2️⃣ 반대로 데이터를 앱에서 사용하려면?

putFile 메서드를 사용해 업로드를 마치게 되면, 다운로드 URL을 반환해준다.
이때 받은 다운로드 URL을 firestore에 저장한 뒤, 앱에서 바로 사용할 수 있다.

여기서 알 수 있듯이, 이미지 업로드가 firebase에 객체를 NoSQL 형태로 저장하는 행동보다 먼저 실행되어야 한다.

🔎 내부 주소와 외부 주소

Storage에는 내부주소와 외부 주소가 존재한다.
우리가 사용하는 https://... 형식의 주소는 외부 주소이다.
내부 주소는 gs://... 형식으로 내부에서만 사용되는 진짜 주소이다.

1️⃣ 왜 이렇게 사용할까?

당연하게도 보안이다.
파일을 공개적으로(public) 두면 아무나 접근할 수 있는 방치 상태가 된다.
하지만 Firebase는 Storage라는 공간에 파일을 안전하게 보관하고, Token을 통해 URL만 발행해주는 형식을 취한다.
여기서 받는 URL은 외부주소이다.

2️⃣ 용도 차이


구글의 산물 Gemini는 두 주소의 차이를 다음과 같이 요약해주고 있다.

profile
주니어 개발자

0개의 댓글