본문 바로가기

Flutter/Firebase

[Firebase] Firebase Storage

Firebase Storage 사용법!


ImagePicker package로 image를 가져오고 

그 이미지를 File()에 넣어서 File 변수로 만들어준다. 중요!!

 

이미지를 업로드 할 때에는 reference가 필요하고

 

이미지를 가져올 때에는 URL로 가져올 수 있다.

이때도 reference가 필요하다. 

reference는 가져올려고 하는 파일의 경로를 말한다.

File _image;

Future getImage() async {
  final image = await ImagePicker().getImage(source: ImageSource.gallery);

  setState(() {
    _image = File(image.path);
  });
 }

/// basename으로 파일의 온전한 이름을 Get 할 수 있다.
///
/// 이미지 Storage에 업로드하기
Future<dynamic> uploadImage(File imageFile) async {
  StorageReference reference = storage.ref().child("images").child(path.basename(imageFile.path));
  return reference.putFile(imageFile).onComplete;
}

/// 이미지 가져오기
Future<String> getImageURL(String filename) async {
  return await storage.ref().child('images').child(filename).getDownloadURL();
}

/// 이미지 삭제하기
///
/// 이미지를 업데이트할 때에는 기존의 이미지를 삭제하고 업로드 해줘야한다.
await storage.ref().child("images").child(widget.product.filename).delete();

 

 

Handling Task


Try Catch문을 사용해서 Error를 Handling 해주자!

Future<void> uploadFile(String filePath) async {
  File file = File(filePath);

  try {
    await firebase_storage.FirebaseStorage.instance
        .ref('uploads/file-to-upload.png')
        .putFile(file);
  } on firebase_core.FirebaseException catch (e) {
    // e.g, e.code == 'canceled'
  }
}