Firebase Storage画像を保存および取得する方法[終了]


268

Firebaseに画像を保存して表示する方法は?


1
これはクールです
。firebase

6
昨日、FirebaseはFirebase Storage(firebase.google.com/docs/storage)と呼ばれる新機能をリリースしました。これにより、任意のファイル(画像、ビデオ、オーディオなど)をアップロードおよびダウンロードできます。ペタバイト規模と競争力のある価格で、Google Cloud Storage(cloud.google.com/storage)に支えられています。あなたは間違いなくこれをチェックする必要があります:)
マイク・マクドナルド

16
ユーザーは便利だと思っていますが、なぜ閉じたのですか?
Amr Lotfy 2017年

7
@TinyGiantこれは推奨を求めているわけではないので、なぜそれがそのように閉じられるのでしょうか?それは完全に話題になっているソフトウェアサービスの機能について尋ねています。

2
私は時期尚早なクローズドコメントが嫌いです。正直な質問は、神の愛のために閉じられるべきではありません!
ジェリルクック2017

回答:


277

アップデート(20160519)FirebaseはFirebase Storageと呼ばれる新機能をリリースしました。これにより、画像やJSON以外のデータを専用のストレージサービスにアップロードできます。JSONデータベースにbase64エンコードされたデータとして保存するのではなく、これを画像の保存に使用することを強くお勧めします。

もちろんできます!画像の大きさに応じて、いくつかのオプションがあります。

1.小さい画像の場合(10 MB未満)

これを行うサンプルプロジェクトがあります:https : //github.com/firebase/firepano

一般的なアプローチは、ファイルをローカルにロードして(FileReaderを使用)、他のデータと同じようにFirebaseに保存できるようにすることです。画像はバイナリファイルなので、base64でエンコードされたコンテンツを取得して、文字列として保存できます。または、さらに便利な方法として、それをdata:urlとして保存して、imgタグのsrcとして入力する準備が整います(これは例です)。

2.大きい画像の場合

Firebaseには、(utf8でエンコードされた文字列データの)10MBの制限があります。画像が大きい場合は、10 MBのチャンクに分割する必要があります。Firebaseは、数メガバイトの文字列ではなく、頻繁に変化する小さな文字列向けに最適化されています。大量の静的データがたくさんある場合は、S3またはCDNをお勧めします。


2
それは素晴らしいです。ファイルサイズの制限に遭遇したことがありますか?Firebaseがマルチメガバイトの文字列を念頭に置いて作成されたとは思わない...
MasterScrat

8
Firebaseには10mb(utf8でエンコードされた文字列データ)の制限があります。画像が大きい場合は、10 MBのチャンクに分割する必要があります。Firebaseは、マルチメガバイトの文字列ではなく、頻繁に変化する小さな文字列向けに最適化されています。大量の静的データがたくさんある場合は、代わりにS3またはCDNをお勧めします。
Michael Lehenbauer 2013年

14
Firebaseは、ホスティングシステム、またはライブラリにAPIが組み込まれたs3インスタンスに、より大きなストレージを追加する必要があります。
The_Brink 2015年

9
@The_Brinkフィードバックをありがとう。これは間違いなく私たちのレーダーです!
Michael Lehenbauer、2015年

4
@ezainそうです。大規模な本番サイトにはこのアプローチはお勧めしませんが(実際にはCDNでバックアップされた画像提供サービスが必要です)、簡単で、多くの用途に「十分」なものです。
Michael Lehenbauer、2015年

25

はい、画像をFirebaseに保存して表示できます。filepickerを使用して画像ファイルを取得できます。その後、イメージを好きなようにホストできます。Amazons3のほうが好きです。画像がホストされると、画像用に生成されたURLを使用して画像を表示できます。

お役に立てれば。


3
このため、更新firbaseドキュメントをチェックアウト:firebase.google.com/docs/storage/#key_functions
ルーカスLiesisに

Amazonでイメージをホストする場合は、代わりにFirebase Storageに保存してみませんか?
Ojonugwa Jude Ochalifu 2017

19

自分で画像をbase64形式で保存してしまいました。firebaseから呼び出されたときに、base64値から変換します。


1
このアプローチの唯一の問題は、画像が大きい場合、画像をアクティビティ間で移動するとアプリが遅くなり、場合によってはクラッシュすることです
Ojonugwa Jude Ochalifu

10

またFilepicker、画像をサーバーに保存するサービスと呼ばれるサービスを使用することもできます。Filepickerは現在Filestackと呼ばれ、画像へのURLを提供します。その後、URLをFirebaseに保存できます。


私が試したコメントからこのサービスを見ましたが、あまり満足していません。
bpolat

3

Grendal2501が最初に行った方法をいくつか実行する方法があります。次に、user15163と同様にそれを行いました。画像のURLをFirebaseに保存して、FirebaseホストまたはAmazon S3で画像をホストできます。


画像を挿入してレンダリングしようとして403エラーが発生しました-アップロードした画像に権限の問題があります-アップロードの設定方法に関する情報。私はacl: 'public-read'を使用しようとしましたが、403でアップロードが失敗しました。役立つ可能性のある情報ポリシードキュメントとバケットポリシーはどれもすばらしいでしょう。AWS-ドキュメントが難しく、エラー以外のデバッグ情報がなく、アクセスが拒否されました。
jamie

2
これを別の質問として尋ねる
Jakob Hartman、

公正なアイデア:)完了-スタックは異なる場合があります-何か刺激があったら、私に教えてください-歓迎されます。AWS S3エラーのデバッグは、少なくとも今のところ非常にイライラしています。 stackoverflow.com/questions/31998827/…–
jamie

2

JSONでBase64文字列を使用すると、非常に負荷がかかります。パーサーは多くの重労働をしなければなりません。現在、FrescoはBase64のみをサポートしています。Amazon CloudまたはFirebase Cloudに何かを置いた方がいいです。そして画像をURLとして取得します。キャッシングにピカソまたはグライドを使用できるように。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.