LoginSignup
0
0

More than 1 year has passed since last update.

ニフクラmBaaSのXamarin SDKにファイルダウンロード機能を追加する

Posted at

やりたいこと

XamarinでニフティクラウドのmBaaSと連携してファイルのやり取りをしたい。
コミュニティSDK(https://github.com/NCMBMania/ncmb_xamarin) はあるがファイルのアップロードしか対応していない。

実装

API実行結果をStreamで返却されるようにする

ExecメソッドはJObjectでしか返せなかったので、ExecFileメソッドを作ってStreamで返せるようにした。

NCMBRequest.cs
        public async Task<Stream> ExecFile()
        {
            ~省略~
            var response = await client.SendAsync(request);
            var body = await response.Content.ReadAsStreamAsync();
            return body;
        }


ファイルダウンロード用メソッド追加

GetClient()で生成するGetRequestのNameにfiles、ObjectIdにファイル名を設定する。
ファイル取得APIは以下のヘッダーにファイル名を指定する必要がある。
-H "Content-Type: application/json" https://mbaas.api.nifcloud.com/2013-09-01/files/test.png

/files/test.pngのfilesがName、ObjectIdがtest.pngに対応する。

NCMBQuery.cs
        public async Task<Stream> FetchFile(string filename)
        {
            var r = GetClient();
            r.Name = "files";
            r.ObjectId = filename;

            var results = await r.ExecFile();
            return results;
        }

あとがき

 XamarinでニフクラmBaaSにファイルを保存してやり取りしたかったのでできるか確認してみた。ファイルストアにファイルをアップロードしてデータストアにファイル名を管理して、選択してダウンロードする感じで実現できた。
 データストアにバイナリ保存はできなさそうだったので上記の方法を使った。

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