2012-09-20 7 views
9

것들 : IIS7에 대한최대 업로드 길이

  1. 당신은
  2. 내가 1 부동산 바이트와에 알고있는 최대 업로드 크기 모두 maxAllowedContentLengthmaxRequestLength을 설정해야 킬로바이트
  3. 다른 내가 200메가바이트 파일까지 처리 할 수 ​​있어야합니다 업로드 구성 요소가 고정 된 위치

을 지정하는 위치 속성을 사용할 수 있습니다. 나는 동적 URL을 위치로 사용하기 위해 모든 페이지의 크기가 200MB가되도록 maxlimit을 설정할 권리가 있다고 생각하지 않습니다. {dynamicvalue}/ConvertModule/Upload

이의 내가 설정 캔트 때문에 어려운 부분은, {dynamicvalue}입니다 (. "ConvertModule는"컨트롤러와 액션이다 "업로드"입니다) :

업로드 URL에 대한 라우팅 패턴이 같은 것입니다 고정 위치는 web.config입니다.

세션 하이재킹으로 인해 플래시 업로드 나 그와 비슷한 것을 솔루션으로 사용하고 싶지 않습니다.

  • 질문 1 (나에게 가장 중요한) : 전용 패턴을 라우팅 기부에 대한 업로드 제한을 설정하는 방법이 있나요?
  • 질문 2 : 업로드 크기를 초과하면 맞춤 경고를 표시 할 수 있습니까?
+1

두 가지 질문이 있습니다. 최상의 응답을 얻기 위해 별도로 게시 할 수 있습니다. 질문 2에 대한 답변 : 업로드 크기를 초과하면 서버에서 오류 응답을 표시합니다. 원하는 경우 해당 응답에 대한 특정 오류 페이지를 응용 프로그램에 표시 할 수 있습니다. –

+0

web.config에서 업로드 시간을 변경해야합니다. 기본으로 2MB 파일 – Oedum

답변

6

질문 1 : 만 제공 라우팅 패턴의 업로드 제한을 설정하는 방법이 있나요?

<location> 노드가 동적 URL을 지원하지 않기 때문에 알고 있지 않습니다. 하지만 url rewrite module을 사용하여 속임수를 쓸 수 있습니다. 이 컨트롤러에 맞게 구성된 일부 노선이 있고

public class PicturesController 
{ 
    [HttpPost] 
    public ActionResult Upload(HttpPostedFileBase file, int dynamicValue) 
    { 
     ... 
    } 
} 

:

routes.MapRoute(
    "Upload", 
    "{dynamicvalue}/ConvertModule/Upload", 
    new { controller = "Pictures", action = "Upload" }, 
    new { dynamicvalue = @"^[0-9]+$" } 
); 

확인을 지금 설치 다음을하자

그래서 당신이 컨트롤러 처리 파일 업로드를 가지고 있다고 가정하자 웹에서 규칙을 다시 작성하십시오.설정 :

<system.webServer> 
    <rewrite> 
     <rules> 
     <clear /> 
     <rule name="rewrite the file upload path" enabled="true"> 
      <match url="^([0-9]+)/ConvertModule/Upload$" /> 
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> 
      <action type="Rewrite" url="pictures/upload?dynamicvalue={R:1}" /> 
     </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

를 지금까지 너무 좋아, 지금 당신은 설치 <location>pictures/upload에 수 : 다시 것 {dynamicvalue}/ConvertModule/Upload하고 URL 재 작성 모듈 :

<location path="pictures/upload"> 
    <system.web> 
     <!-- Limit to 200MB --> 
     <httpRuntime maxRequestLength="204800" /> 
    </system.web> 
    <system.webServer> 
     <security> 
      <requestFiltering> 
       <!-- Limit to 200MB --> 
       <requestLimits maxAllowedContentLength="209715200" /> 
      </requestFiltering> 
     </security> 
    </system.webServer> 
</location> 

이제 당신은 다음과 같은 패턴의 URL로 업로드 할 수 pictures/upload?dynamicvalue={dynamicvalue}에 그것을하지만 <location> 태그 pictures/upload 일치 성공적으로 제한이 적용됩니다 :

<form action="/123/ConvertModule/Upload" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file" /> 
    <button type="submit">OK</button> 
</form> 

질문 2 : 업로드 크기가 초과되면 사용자 지정 경고를 표시 할 수 있습니까?

아니요, 더 큰 값으로 제한을 설정하고 업로드 처리기에서 파일 크기를 확인해야합니다. 그리고 클라이언트 (HTML5, Flash, Silverlight, ...)에서 파일 크기를 확인할 수 있다면 대역폭을 낭비하지 않도록하십시오.

+0

로 설정되어 있다고 생각합니다.이 답변에 감사드립니다. 그것은 내가 만난 모든 문제에 대한 해답을 담고있다. – PcPulsar