[flutter] Firebase 스토리지로 앱에서 파일 업로드/다운로드 기능 추가하기

Firebase는 앱 개발을 위한 다양한 기능을 제공하는 플랫폼 중 하나입니다. Firebase 스토리지는 파일을 안전하게 저장하고 액세스할 수 있는 클라우드 스토리지 솔루션을 제공하여 Flutter 애플리케이션에서 파일 업로드 및 다운로드 기능을 구현할 수 있습니다.

이번 글에서는 Firebase 스토리지를 사용하여 Flutter 앱에서 파일을 업로드하고 다운로드하는 방법에 대해 알아보겠습니다.

1. Firebase 프로젝트 설정

먼저 Firebase 콘솔에서 프로젝트를 생성하고, 앱을 추가한 후 Firebase 스토리지를 활성화합니다. 그리고 google-services.json 파일을 프로젝트에 추가하여 Firebase SDK를 설정합니다.

2. Firebase 스토리지 의존성 추가

pubspec.yaml 파일에 Firebase 스토리지 의존성을 추가합니다.


dependencies:
  firebase_storage: ^8.0.6

의존성을 추가한 후에는 flutter pub get 명령을 실행하여 패키지를 설치합니다.

3. 파일 업로드 구현

다음으로, Firebase 스토리지를 사용하여 파일을 업로드하는 기능을 구현합니다. 예를 들어, 이미지 파일을 업로드하는 경우 FirebaseStorage.instance.ref().child('images').child('img1.jpg').putFile(file)와 같은 방식으로 파일을 업로드할 수 있습니다.

import 'dart:io';
import 'package:firebase_storage/firebase_storage.dart';

Future<String> uploadFile(File file) async {
  try {
    var fileName = file.path.split('/').last;
    var reference = FirebaseStorage.instance.ref().child('images/$fileName');
    await reference.putFile(file);
    return await reference.getDownloadURL();
  } catch (e) {
    print(e.toString());
    return null;
  }
}

위의 코드는 uploadFile 함수를 사용하여 파일을 업로드하고, 업로드된 파일의 다운로드 URL을 반환합니다.

4. 파일 다운로드 구현

파일을 다운로드하는 기능도 쉽게 구현할 수 있습니다. Firebase 스토리지에서 파일을 가져오고 해당 파일의 URL을 앱에서 사용할 수 있습니다.

import 'package:firebase_storage/firebase_storage.dart';

Future<String> downloadFile(String fileURL) async {
  try {
    return await FirebaseStorage.instance.ref(fileURL).getDownloadURL();
  } catch (e) {
    print(e.toString());
    return null;
  }
}

마무리

위에서 설명한 방법을 사용하여 Firebase 스토리지를 통해 Flutter 앱에서 파일 업로드 및 다운로드 기능을 구현할 수 있습니다. 이를 통해 사용자는 앱 내에서 파일을 안전하게 저장하고 공유할 수 있게 됩니다.

Firebase 스토리지는 안전하고 신뢰할 수 있는 파일 저장 및 액세스 솔루션을 제공하므로, Flutter 앱에서 파일 관련 기능을 필요로 할 때 Firebase 스토리지를 고려해 보는 것이 좋습니다.

더 자세한 정보는 Firebase 스토리지 문서를 참고할 수 있습니다.