読者です 読者をやめる 読者になる 読者になる

がりらぼ

WindowsRuntimeの応援ブログ

Mobile Serviceに画像をアップロードする

.NetバックエンドでCustomAPIを作りましょう。

画像はbyte[]データをByteArrayContentに入れて、HTTP POSTで投げます。

.NetバックエンドCutomAPIはこんな感じ

public class ImageController : ApiController
{
    public ApiServices Services { get; set; }

    
    //POST api image
    public async Task Post()
    {
        byte[] buff = await Request.Content.ReadAsByteArrayAsync();
        Services.Log.Info("hogehoge");
    }

}

今回はWindowsストアアプリから写真を撮ってSystem.Net.HttpClientでPOSTしてみましょう。

private async void btnCapture_Click(object sender, RoutedEventArgs e)
{
    CameraCaptureUI capture = new CameraCaptureUI();
    capture.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg;
    var file = await capture.CaptureFileAsync(CameraCaptureUIMode.Photo);

    IRandomAccessStream stream = await file.OpenReadAsync();
    byte[] buff = new byte[stream.Size];
    DataReader reader = new DataReader(stream);
    await reader.LoadAsync((uint)stream.Size);
    reader.ReadBytes(buff);

    
    
    HttpClient client = new HttpClient();
    var message = await client.PostAsync("{mobile service url}/api/Image",new ByteArrayContent(buff));

    MessageDialog dialog=new MessageDialog(await message.Content.ReadAsStringAsync());
    await dialog.ShowAsync();
}

.Netバックエンドの場合LocalHostブレークポイントおいてデバッグしておいてそこにむかってHttp Request投げればステップ実行できるのでサイコーですね! f:id:garicchi:20150304012411p:plain