2009-10-16 2 views

답변

3

이것은 클라이언트 측에서 javascript를 사용하여 수행 할 수 없습니다. 플래시, 실버 라이트 등으로 작성된 파일 업로드 구성 요소가 유형, 크기 및 크기별로 업로드되는 파일을 제한 할 수 있습니다.

+1

+1 - 실버 라이트 물론 : –

0

당신은 크기가

+0

클라이언트 측에서? – leppie

+0

서버 측 없음 (asp.net) –

+0

-1 - 그는 구체적으로 "서버에 업로드하기 전에"라고 말했습니다. –

0

당신은 스스로에게 물어 필요 ASP.net 래퍼에 대한 this project을보고 확인하는 GD를 사용할 수 있습니다, 당신은 정말이 전혀 가능하다고 생각합니까?

자바 스크립트는 어떻게 파일을 열 수 있습니까? 어떻게 읽습니까? 다양한 이미지 형식을 읽을 수있는 라이브러리를 보유하고 있습니까?

2

클라이언트에서 JS의 파일 크기를 알 수 없습니다.

당신 할 요청이 서버에 도착하면 예상 파일 크기가 일정 한도를 초과하는 경우, 다음 전송을 취소 파일 크기를 검사 할 수 있습니다 : 업로드 모듈의 BeginRequest에서

:

HttpWorkerRequest workerRequest = (HttpWorkerRequest)context.GetType().GetProperty("WorkerRequest", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(context, null); 
     // Indicates if the worker request has a body 

     if (workerRequest.HasEntityBody()) 
     { 
      // Get the byte size of the form post. 
      long contentLength = long.Parse((workerRequest.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength))); 
      if (contentLength > MAX_UPLOAD_FILE_SIZE * 1024) 
        { 
        workerRequest.CloseConnection(); 
        context.Response.Redirect(SomeErrorPage); 
        } 
     } 

는 아직 테스트하지 않은,하지만 이론적으로는

EDIT를 작동 할 수 있습니다 : 결코 마음을, 나는 바보입니다. 나는 그가 이미지 크기가 아닌 파일 크기를 검사하는 것을 의미한다고 생각했다.

1

나는 this Javascript snippet을 발견했고 내 시스템 (IE 7.0.6001.18000)에서 작업했다. 가능한 크로스 브라우저 문제를인지하고 확인해야합니다.

var tempImage; 

function showDimensions() { 
    var imageName = document.forms[0].elements['myFile'].value; 
    if (imageName != '') { 
     imageName = 'file:///' + escape(imageName.split('\\').join('/')); 
     imageName = imageName.split('%3A').join(':'); 

     tempImage = new Image(); 
     tempImage.onload = getDimensions; 
     tempImage.src = imageName + '?randParam=' + new Date().getTime(); 
     // append a timestamp to avoid caching issues - which happen if you 
     // overwrite any image with one of different dimensions, and try to 
     // get the dimensions again even with cache settings to max, 
     // in both ff and ie! 
    } 
} 

function getDimensions() { 
    alert(tempImage.width + ' x ' + tempImage.height); 
} 
+1

나는 보안 문제를 떠올리게하지 않을 것이다. 또한 IE7 +에서 Upload File 요소의 값은 전체 경로를 더 이상 포함하지 않습니다. 파일의 이름 만. – Radu094

+0

+1 : IE7을 사용하여이 코드를 실행하고 작업했습니다. 어쨌든,이 문제에 대한 경고 메시지가 나타날 수 있습니다. –

+0

이상한 점은 IE7에서 완전한 파일 경로를 얻을 수 있다는 것입니다. 이 동작 변경으로 인해 업로드 구성 요소를 다시 작성해야한다는 것을 분명히 기억합니다 ... 어쩌면 미래의 IE7 업데이트가 이전 방식으로 되돌아 갔을 수도 있습니다. – Radu094

관련 문제