1
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?

Flutter WebでファイルをFirebase Storageにアップロードする方法のメモ

Last updated at Posted at 2024-10-29

概要

Flutter WebでファイルをFirebase Storageにアップロードしようとした際に試したことをメモします。もっと良い方法がありましたら教えていただけると幸いです。

使用技術・環境

  • Flutter 3.22.2
  • Firebase Storage
  • M1 MacBook Air Sonoma 14.6.1

試した方法

putFileを使用

FirebaseStorageのputFileを使う方法です。

FirebaseStorage storage = FirebaseStorage.instance;
FirebaseFirestore firestore = FirebaseFirestore.instance;

final file = File(uploadFile.files.first.path!);
final uploadTask = await storage
    .ref('uploaded_file/${uploadFile.files[0].name}')
    .putFile(file);

uploadFile変数には、FilepickerのpickFilesで選択した情報が入っています。AndroidやIphoneでは動作しましたが、Flutter Webでは動作しませんでした。また、アップロードに二十秒ほどの時間がかかりました。

putDataを使用

putFileの代わりに、putDataを使用しました。Filepickerで選択したファイルのバイトデータを取得し、これを送る方法です。

FirebaseStorage storage = FirebaseStorage.instance;
FirebaseFirestore firestore = FirebaseFirestore.instance;

final uploadedFile = uploadFile.files[0].bytes;
final uploadTask = await storage
    .ref('uploaded_file/${uploadFile.files[0].name}')
    .putData(uploadFile.files[0].bytes!);

FilepickerのGitHubを確認しますと、PlatFormFileというクラスが存在しました。FilePikcerのpickFileで取得したファイルは、PlatFormFileというクラスで管理されているようです。コードを読んでいきますと、Uint8List型のbytesというメンバ変数を見つけました。

...
  /// Byte data for this file. Particularly useful if you want to manipulate its data
  /// or easily upload to somewhere else.
  /// [Check here in the FAQ](https://github.com/miguelpruivo/flutter_file_picker/wiki/FAQ) an example on how to use it to upload on web.
  final Uint8List? bytes;
...

Firebase Storageには、Uint8List型のデータを送信できるメソッドがありますので、ファイルのバイト列を送る方法を試してみました。

結果

putDataを使う方法で、無事ファイルを送信することができました。また、送信にかかる時間も短縮されました。

まとめ

Flutter WebでFirebase Storageにファイルをアップロードする際、FilePickerで選択したファイルのバイト列をputDataで送信することで、ファイルをアップロードすることができました。

参考

1
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
1
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?