ASP.NET Core Mvc 파일 업로드 제한 문제 해결 예

高洛峰
풀어 주다: 2016-12-10 09:14:35
원래의
1729명이 탐색했습니다.

1. 소개

ASP.NET Core MVC에서 파일 업로드를 위한 기본 최대 업로드 파일은 20MB입니다. 더 이상 Web.Config를 어떻게 시작해야 할까요?

2. 업로드 파일 크기 설정

1. 애플리케이션 수준 설정

파일 업로드 크기를 설정하려면 ConfigureServices 메서드에 다음 코드를 추가해야 합니다. 60MB로 제한됩니다.

public void ConfigureServices(IServiceCollection services)
{
  servicesConfigure<FormOptions>(options =>
  {
    optionsMultipartBodyLengthLimit = 60000000;
  });
}
로그인 후 복사

2. 작업 수준 설정

위의 전역 설정 외에도 필터를 사용자 정의하여 단일 Action의 경우 Filter 코드는 다음과 같습니다.

[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 컨텍스트는 각 기능을 관리할 수 있는 컨테이너일 뿐입니다. 이 필터에서는 Action만 가로채고, HttpContext의 FormFeature(양식 제출 기능 담당)를 재설정하여 특정 Action이 업로드하는 파일 크기를 제한하는 목적을 달성합니다.

3. 결론

파일 업로드 버그가 발견된 것 같았으나 1.0.1 버전에서 수정된 것으로 확인되었습니다. 버전 1.0.0에서는 작업이 IFromFile을 매개 변수로 설정하지 않으면 Request.From.Files에 액세스할 수 없으며 예외가 보고됩니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿