zukucode
主にWEB関連の情報を技術メモとして発信しています。

ASP.NET アップロードされたファイル(IFormFile)をバイト配列で読み込む

ASP.NETでアップロードされたファイルをバイト配列で読み込む方法を紹介します。

ASP.NETWebAPIなどでmultipart/form-dataのリクエストでアップロードされたファイルはIFormFile型の変数に格納されています。

IFormFile型のファイルをバイト配列で読み込むには以下のようにします。

public static async Task<byte[]> GetBytesAsync(IFormFile formFile)
{
    using var memoryStream = new MemoryStream();
    await formFile.CopyToAsync(memoryStream);
    return memoryStream.ToArray();
}
使い方
byte[] content = await GetBytesAsync(request.File);

拡張メソッドとして定義

以下のように、拡張メソッドとして定義しておけば、よりわかりやすく使用できます。

public static class Extensions
{
    public static async Task<byte[]> GetBytesAsync(this IFormFile formFile)
    {
        using var memoryStream = new MemoryStream();
        await formFile.CopyToAsync(memoryStream);
        return memoryStream.ToArray();
    }
}
使い方
byte[] content = await request.File.GetBytesAsync();

関連記事