くうと徒然なるままに

ゆるふわ を志向している なごやかです。

asp.net core で byte の配列を body より読み込む方法

asp.net で body より値を読み込む時は Controller の関数の引数に [frombody] ClassName hoge みたいに指定すると思います。 body の値を自動的にパースして指定されたクラスのインスタンスとして格納してくれるわけです。 しかし、 byte の配列は String を指定してもパースすることはできないため、 プログラム中で指定すると Nullになってしまいます。

そこでどうするかについての記事です。 以下のコードを書いておくとボディから読み込めます。よしなに調理してくださいませ

コード

// ボディの長さだけのからのbyte 配列を作成
byte[] imageBytes = new byte[Request.Body.Length];
// 読み出す
Request.Body.Read(imageBytes, 0, imageBytes.Length);