프로그래밍/웹 관련

ASP에서 ABCUpload 컴포넌트 사용시 업로드 파일용량 문제

채윤아빠 2010. 10. 26. 20:28
728x90
반응형

개요
ASP에서 ABCUpload를 이용하여 파일 업로드 기능을 구현하면, 기본 설정 상태에서 실행하면 10MB 이상의 파일 업로드가 실패합니다. 10MB이상의 파일을 업로드 하기 위해서는 IIS 구성 파일을 수정한 이후에, IIS 서비스를 재시작해야 하고, ABCUpload 컴포넌트를 이용할 때도, 특정 속성에 한계 용량을 설정해 주어야 합니다.


1. IIS 설정
직접 IIS의 설정 파일을 수정하는 방법인 경우에는 IIS 6.0(Windows2003) 이상의 운영체제를 사용중이라면, C:\WINDOWS\system32\inetsrv 폴더내에 있는 MetaBase.xml 이라는 설정 파일을 열어 AspMaxRequestEntityAllowed="204800"으로 할당되어 있는 값에 원하는 최대 전송 용량을 설정한 이후에, IIS 서비스를 재시작하면 됩니다. AspMaxRequestEntityAllowed 값을 설정하기 전에 먼저 IIS 서비스를 중지시킨 후에, 설정값을 수정하고 IIS 서비스를 재시작해야만 올바로 적용됩니다.

직접 설정 파일을 수정하는 방법보다는 아래와 같이 명령어를 통하여 수정하는 것이 더 간단합니다.
먼저 cmd 창을 열고 다음 명령들을 순차적으로 실행합니다.
C:\Documents and Settings\Administrator> cd \Inetpub\AdminScripts
C:\Inetpub\AdminScripts> cscript adsutil.vbs set w3svc/ASPMaxRequestEntityAllowed 20480000
Microsoft (R) Windows Script Host 버전 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

ASPMaxRequestEntityAllowed      : (INTEGER) 20480000

C:\Inetpub\AdminScripts> iisreset

중지하려고 합니다...
인터넷 서비스를 성공적으로 중지했습니다.
시작하려고 합니다...
인터넷 서비스를 성공적으로 다시 시작했습니다.

C:\Inetpub\AdminScripts>


2. ABCUpload 컴포넌트 활용시 설정
대용량의 파일을 받아서 처리하기 위해 앞서 IIS 설정을 변경하고, ASP 소스상에서 ABCUpload 컴포넌트 객체의 MaxUploadSize 속성에 한계 용량을 설정합니다.
그리고 대용량의 파일을 업로드 하게 되면, 서버에 전송되는 시간이 길어지기 때문에 사전에 ASP 처리 시간을 충분히 늘려두어야 합니다.(Server.ScriptTimeOut = 600 ' 10분동안 처리) 그렇지 않은 경우, 대용량 파일이 업로드 되는 중간에 오류로 처리가 되어 버립니다.
<%@EnableSessionState=False%>
<%
Option Explicit

Server.ScriptTimeOut = 600 ' 10분으로 설정
' ...

Set objABCUpload = Server.CreateObject("ABCUpload4.XForm")
objABCUpload.MaxUploadSize = 500 * 1024 * 1024 ' 500MB
' ...

%>


참고자료