C#でFirebaseを使ってみよう!(2) Storageを使ってみる
あすかです。
前回の記事では、Firebaseの準備とユーザ作成、認証を行いました。
今回は、早速ですがStorageでファイヤー!してみます!
Storageでファイヤー!する
必要なnugetパッケージ
下の2つです。このうち、Authenticationは(1)で導入済みだと思います。
現時点で、StorageとAuthenticationのパッケージは、依存関係を持っていません。
つまり、Storageをダウンロードしても、Authenticationはついてこないです。
Storageを認証無しで使う方法があるからだと思いますが、そこのあたりは注意してくださいね!
参照について
Storageでファイヤー!するためには、まずStorageへの参照を作らなければいけません。
読み込むときも、書き込むときも、必ずこの参照を使います。
これ大切です!重要です!必須です!
ということで、パスから参照を作成するメソッドを作ってみます。
ここで手に入れた参照をあんなことやこんなことに使って‥‥ムヒヒ
参照を手に入れる時、認証で得た情報を使っていることに注目してください。
文字列でファイヤー!する
文字列をアップロードする
stringをbyte[]に変換してから、PutAsyncでファイヤー!します。
文字列をダウンロードする
ファイヤー!からは直接文字列を取得することはできません。
ダウンロードするためのURLが手に入りますので、あとは自分でHTTPから落としてくださいねって感じです。
ちなみにダウンロードURLにHTTP接続する時、認証などは不要です。
実行してみる!
めんどいのでWPFだけで試します。
もちろんXFでも動く!(多分)
ログインしないままアップロードしようとすると、エラーが出ます。
ログインしたらアップロードできました!(`・ω・´)
ダウンロードもできました!
ここでFirebaseのコンソールからStorageを表示させると、ちゃんとtest.txtがアップロードされていることがわかります。
ファイルでファイヤー!する
文字列の送受信だけでなく、画像とかバイナリデータとかももちろんできます!
ただ、WPFはいいんですが、Xamarin.Formsでファイルを扱う手段がありません。そこでPCLStorageを使います。
インスコしときます!
NuGet Gallery | PCL Storage - Portable Storage APIs 1.0.2
ファイルをアップロードする
PCLStorageを使ってストレージを手に入れ、ファイヤー!に直接つなげます。
ファイルをダウンロードする
HttpClientからStreamが手に入りますので、それをPCLStorageにつなげます。
実行!
アップロード&ダウンロード両方やりました!
さて、ここでファイヤー!のコンソールのStorageを見てみましょう。
なんということでしょう!画像がアップロードされているではありませんか!
次に、ダウンロードしたファイル(ここではtest_download.png)を見てみます!
ぎゃーーー!入ってる入ってる!いい!(`・ω・´)ファイヤー!
まとめ
ファイヤー!
今回のコードは、GitHubにあげてます。
余談ですが、実はFirebaseはStorage用のREST APIを公開していません。
でも、FirebaseのStorageって、実はGoogle Cloud Storageをラッピングしてるだけなんです。
Google Cloud StorageがREST APIを公開していますので、
今回使用したライブラリでは、それを呼び出してると思います。
ていうか作者のブログで「Web APIのJavaScriptを模倣しましたよー!」と書いてあったので、結果的にそうなってるのかなと。
次回はDatabaseでファイヤー!します。
Databaseはちょっと長くなりそう。。