0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FlutterでFirebaseのCloud Storageに写真をアップロードしたときのメモ

Last updated at Posted at 2023-10-20

利用環境

pubspec.yaml
  firebase_auth: ^4.2.2
  firebase_auth_web: ^5.2.10
  firebase_core_web: ^2.2.2
  firebase_core: ^2.10.0
  image_picker: ^0.8.7+4
  firebase_storage: ^11.1.1

実現したかったこと

  • flutter経由でFirebaseのCloud Storageにスマホの写真フォルダにある写真をアップロードして、アプリ画面に映し出せるようにしたかった。
  • Cloud Storageにアップロードされた写真のurlを取得する

起こった問題

解決法

・メタデータ(ファイルのパス?)も一緒にアップロードしたら解決した。

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:image_picker/image_picker.dart';

//一部省略しています

//写真をアップロードするメソッド
void _uploadPhoto() async {

      UploadTask uploadTask; 
      final uid = FirebaseAuth.instance.currentUser?.uid; //uid取得
      ImagePicker imagePicker = ImagePicker();  //写真フォルダを開く

      XFile? file = await imagePicker.pickImage(source: ImageSource.gallery);
      if (file == null) return;

      Reference referenceRoot = FirebaseStorage.instance.ref("images/$uid").child(file.name); //cloud storageの/imagesフォルダにアップロード

      final metadata = SettableMetadata(
          contentType: 'image/jpeg',
          customMetadata: {'picked-file-path': file.path});

      if (kIsWeb) {
        uploadTask = referenceRoot.putData(await file.readAsBytes(), metadata);
      } else {
        uploadTask = referenceRoot.putFile(io.File(file.path), metadata);
      }

      print('アップロード完了');
      downloadUrl = await referenceRoot.getDownloadURL(); //url取得
      print('downloadUrl:$downloadUrl');
  }
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?