ホームページ  >  記事  >  バックエンド開発  >  ASP.NET Core Mvc ファイルのアップロード制限問題の解決例

ASP.NET Core Mvc ファイルのアップロード制限問題の解決例

高洛峰
高洛峰オリジナル
2016-12-10 09:14:351727ブラウズ

1. はじめに

ASP.NET Core MVC では、ファイルアップロードのデフォルトの最大アップロードファイルは 20MB ですが、Web を使用せずにどのように設定すればよいかわかりません。 .設定はどこから始めますか?

2. アップロード ファイル サイズの設定

1. アプリケーション レベルの設定

ファイルのアップロード サイズ制限を 60 MB に設定するには、ConfigureServices メソッドに次のコードを追加する必要があります。

public void ConfigureServices(IServiceCollection services)
{
  servicesConfigure<FormOptions>(options =>
  {
    optionsMultipartBodyLengthLimit = 60000000;
  });
}

2.アクションレベルの設定

上記のグローバル設定に加えて、フィルターコードをカスタマイズすることで単一のアクションを制御することもできます。

[AttributeUsage(AttributeTargetsClass | AttributeTargetsMethod, AllowMultiple = false, Inherited = true)]
 public class RequestFormSizeLimitAttribute : Attribute, IAuthorizationFilter, IOrderedFilter
 {
   private readonly FormOptions _formOptions;
 
   public RequestFormSizeLimitAttribute(int valueCountLimit)
   {
     _formOptions = new FormOptions()
     {
       ValueCountLimit = valueCountLimit
     };
   }
 
   public int Order { get; set; }
 
   public void OnAuthorization(AuthorizationFilterContext context)
   {
     var features = contextHttpContextFeatures;
     var formFeature = featuresGet<IFormFeature>();
 
     if (formFeature == null || formFeatureForm == null)
     {
       // Request form has not been read yet, so set the limits
       featuresSet<IFormFeature>(new FormFeature(contextHttpContextRequest, _formOptions));
     }
   }
 }

ASP.NET Core MVC では、以前のバージョンとは異なり、特定の関数がさまざまな機能にカプセル化されており、HttpContext コンテキストは各機能を管理できる単なるコンテナーです。このフィルターでは、アクションのみがインターセプトされ、特定のアクションによってアップロードされるファイルのサイズを制限するという目的を達成するために、HttpContext 内の FormFeature (フォーム送信機能を担当) がリセットされます。

3.結論

ファイルアップロードのバグを見つけたようですが、バージョン1.0.1で修正されていることが確認されました。バージョン 1.0.0 では、アクションがパラメーターとして IFromFile を設定しない場合、Request.From.Files にアクセスできなくなり、例外が報告されます。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。