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 にアクセスできなくなり、例外が報告されます。