최고의 서비스, 최상의 가격으로 제공하겠습니다. Location : Home > Customer Center > HelpDesk
제목 DEXTUpload을 이용한 자료실 만들기



DEXTUpload을 이용한 자료실 만들기

DEXTUpload 업로드 컴포넌트는 상용컴포넌트로서 사이트갤럭시보다 훨씬 강력한 성능을 제공합니다.
빠른업로드지원,최소서버자원사용량,다양한기능지원등 많은 장점이 있습니다.
사이트의 부하를 최소화하기 위하여는 DEXTUpload 컴포넌트를 사용하시기 바랍니다.
참고로 샘플코드는 해당 홈페이지를 참고 바랍니다.
그리고 기술지원부분도 DEXTUpload.com을 방문바랍니다.


업로드 컴포넌트 사용 이유
FileSystemObject나 ADODB.RecordSet 등을통해서는 파일 업로드를 직접 구현할 수 없습니다.
왜냐하면,파일을 서버에 보내기 위해서는 FORM 태그에서 ENCTYPE="multipart/form-data"라는 속성을 넣어 주어야 하는데,이렇게 되면 ASP에서는 Request.Form 개체를 사용하지 못하게 됩니다.
결국, 파일을 업로드하기 위해서는 파일도 받아들일 수 있고,입력 양식 데이타도 동시에 받아들일 수 있는 기능을 가진 별도의 컴포넌트를 이용해야 합니다.
이를 위하여, 인터넷 상에는 파일 업로드를 구현해 주는 수 많은 컴포넌트가 있는데,그 중 우리는 사용하기 쉬운 SiteGalaxyUpload라는 이름의 컴포넌트를 사용해 보도록 하겠습니다.


upload.htm
<html>
<head><title>파일 업로드</title></head>
<body>
<center>
<h1>파일 업로드</h1>
<hr>
<form method=post action=upload.asp enctype="multipart/form-data">
<table border=0 align=center>
<tr>
<td> 제목 : </td>
<td><input type=text name=title size=30></td>
</tr>
<tr>
<td colspan=2>설명 : <br>
<textarea name=content rows=10 cols=50 ></textarea></td>
</tr>
<tr>
<td colspan=2><input type=file name=upfile value="검색..."></td>
</tr>
<tr>
<td colspan=2><input type=submit value="파일 업로드"></td>
</tr>
</table>
</form>
</center>
</body>
</html>


upload.asp
upload.asp는 파일 업로드 기능 및 위의 입력 양식에서 입력된 파일에 대한 정보들을 입력받습니다.

<%

Set uploadform = Server.CreateObject("SiteGalaxyUpload.Form")

if UploadForm("title") <> "" then   set conn = server.createobject("ADODB.Connection")
   conn.open session("dsn")
   upfile     = UploadForm("upfile")
   subject = UploadForm("title")
   textdata = UploadForm("content")

   if Len(upfile) > 0 then
     set fs = CreateObject("Scripting.FileSystemObject")

     ' 해당폴더의 하위폴더 upfiles라는 폴더에 자료실을 운영

     fsdir = server.mappath(".") & "\upfiles\"
     filedir = UploadForm("upfile").filepath
     filename = mid(filedir, instrrev(filedir,"\")+1)
     filename1 = mid(filename,1,instrrev(filename,".")-1)
     filename2 = mid(filename,instrrev(filename,".")+1)

     addfile = fsdir & filename

     fexist = true
     count = 0

   '파일이 이미 있을때

     do while fexist
    if(fs.fileexists(addfile)) then
             count = count + 1
             filename = filename1 & "-" & count & "." & filename2
             addfile = fsdir & filename
          else
             fexist=false
          end if
     loop

     UploadForm("upfile").saveas addfile
     set fs=nothing

   end if

   if upfile = "" then
      filesize=0
      filename=""
   end if

'----------- 파일 업로드 기능 ---------------

   conn.execute("insert into board values ('"subject & "','" & _ 
                                                                        textdata & "','" & _
                                                                        filename & "',0)")

   conn.close
   set conn=nothing 

   response.redirect "boardlist.asp"

end if
유의사항
SiteGalaxy.Form 개체가 생성되면 위와같이 컬렉션의 형태로 입력 양식의 값들을 참조할 수 있습니다.
그런데, 하나 주의할 점은 HTML 입력 양식에서 정의된 입력 양식 이름(NAME 속성)과 컬렉션을 참조하는 키(Key) 값은 대소문자를 구분한다는 점입니다.
즉, HTML 입력 양식에 <input type=file name=upfile> 이라고 정의해 놓고 uploadform("UPFILE")을 참조하게 되면 에러가 발생합니다.
` 반드시 uploadform("upfile") 으로 수정해 주어야 합니다.
이는 SiteGalaxyUpload 컴포넌트 자체의 버그인 것 같습니다.
멋진 ASP기반 자료실을 구축하는데는 많은 도움이 되었으면 합니다.