ASP.NET Core プログラミング

【 ASP.NET Core WebAPI 】複数のファイルストリームをクライアント側に返す方法

ASP.NET Core 6 WebAPIで複数のファイルストリームをクライアントにレスポンスとして返す方法を解説します。

複数のファイルストリーム返却 実装方法

ASP.NET Core 6 WebAPIで複数のファイルストリームをクライアントにレスポンスとして返すには、PushStreamContent を使用する方法があります。

また、返り値のMIMEタイプにはapplication/octet-streamを設定する必要があります。

[HttpGet("download")]
public IActionResult Download()
{
    var files = GetFiles(); // ファイルストリームを取得する処理

    var response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Content = new PushStreamContent(async (stream, content, context) =>
    {
        try
        {
            foreach (var file in files)
            {
                using (var fileStream = file.OpenRead()) // ファイルストリームを取得する処理に置き換える
                {
                    var fileName = file.Name; // ファイル名を取得する
                    var fileContent = new StreamContent(fileStream);
                    fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                    fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = fileName // ダウンロード時のファイル名を設定する
                    };
                    await fileContent.CopyToAsync(stream);
                }
            }
        }
        finally
        {
            stream.Close();
        }
    });

    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
    return new ResponseMessageResult(response);
}

おすすめ記事はコチラ

スマレジ テックファーム 1

スマレジ テックファーム で Webエンジニアとして勤めている tomoです。 今回は株式会社スマレジや私が所属している 「 スマレジ テックファーム 」についてPRしていきたいと思います。 スマレジ ...

2

FromBody 属性を使用して、 ASP.NET Core(.NET 6)のWebAPIでBodyパラメータのJSONを受け取る方法を解説します。 FromBody 属性 POSTやGETで呼び出さ ...

PC picture 3

ASP.NET Core(.NET 6)でCookie認証のタイムアウトを設定する方法を解説します。 Cookieの有効期限について Cookieには通常はタイムアウト(有効期限)を設定します。 基本 ...

4

ASP.NET Core(.NET 6)でクロスオリジンリクエスト ( CORS )を設定する方法を解説します。 簡単に クロスオリジンリクエスト ( CORS )とは何かについても少し解説したいと思 ...

-ASP.NET Core, プログラミング
-, ,