【ASP.NET Core Web】アップロードされるファイルサイズの上限を設定する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【ASP.NET Core Web】アップロードされるファイルサイズの上限を設定する

2023-11-2 | ,

ASP.NET Core Webでアップロードされるファイルサイズの上限を設定したい!

概要

今回の記事では、ASP.NET Core Webでアップロードされるファイルの上限を設定する手順を掲載する。

仕様書

環境

  • .NET 7.0

手順書

上限を「サイト全体」と「特定のコントローラー」に設定する2パターンを挙げる。

サイト全体

Startup.csoptions.MultipartBodyLengthLimitを追加する。

public class Startup
{
    ...

    public void ConfigureServices(IServiceCollection services)
    {
        ...

        services.Configure<FormOptions>(options =>
        {
            options.MultipartBodyLengthLimit = 20 * 1024 * 1024;
        });
    }

    ...
}

単位はバイト。上記は、上限を20MBに設定する例。

1024倍するごとにKB->MB->GB->TBという感じになる。

特定のコントローラー

上限を設定したいコントローラーに下記のような感じで追加する。

public class MyController : Controller
{
    [HttpPost("UploadFile")]
    public IActionResult UploadFile(IFormFile file)
    {
        if (file == null || file.Length == 0)
        {
            return BadRequest("ファイルがないのだ!");
        }

        long fileSizeLimit = 20 * 1024 * 1024;
        if (file.Length > fileSizeLimit)
        {
            return BadRequest($"ファイルサイズオーバー!");
        }

        return Ok("Success!");
    }
}

まとめ(感想文)

これらのやり方は一旦ファイルがサーバーにアップロードされてしまうので設定した上限以上のトラフィックが発生しちゃう。

ApacheなどのWEBサーバーの設定で上限を設定するとサーバーがリクエストを処理する前に余計なトラフィックを防止できるのでそっちの方が良さそう。