업로드 컴포넌트 SiteGalaxyUpload 사용방법

업로드 컴포넌트 SiteGalaxyUpload 사용방법

인터넷에는 매우 많은 파일 업로드 관련 컴포넌트가 떠돌아다니고 있다. 어떤 것들은 비용을 지불하고 구입해야 하는 것도 있으며,어떤 것은 공짜로 기능에 제한 없이 사용하는 것들도 있다. 이번에 설명하는 파일 업로드/다운로드 구현은 SiteGalaxytUpload 라는 컴포넌트를 이용하여 파일 업로드를 구현하는 방법을 설명하도록 한다.
이 컴포넌트는 ASP 기반 자료실을 제작하는 데 많은 도움이 될 것이다.

가. 컴포넌트의 필요성

    애석하게도, FileSystemObject나 ADODB.RecordSet 등을 통해서는 파일 업로드를 직접 구현할 수 없다. 왜냐하면, 파일을 서버에 보내기 위해서는 FORM 태그에서 ENCTYPE="multipart/form-data"라는 속성을 넣어 주어야 하는데, 이렇게 되면 ASP에서는 Request.Form 개체를 사용하지 못하게 된다.

    결국, 파일을 업로드하기 위해서는 파일도 받아들일 수 있고, 입력 양식 데이타도 동시에 받아들일 수 있는 기능을 가진 별도의 컴포넌트를 이용해야 한다. 이를 위하여, 인터넷 상에는 파일 업로드를 구현해 주는 수 많은 컴포넌트가 있는데, 그 중 우리는 사용하기 쉬운 SiteGalaxyUpload 라는 이름의 컴포넌트를 사용해 보도록 한다.


나. SiteGalaxyUpload 사용방법

    (1) SiteGalaxyUpload 컴포넌트 설치  

          먼저, 파일(SiteGalaxyUpload.zip, 75 KB)을 다운로드 받는다.

                

압축을 푼뒤 "SiteGalaxyUpload.dll" 파일을 Winnt\system32 에 복사를 한다


시작->실행-> regsvr32 c:\winnt\system32\SiteGalaxyUpload.dll


"DllRegisterServer in c:\winnt\system32\SiteGalaxyUpload.dll succeeded."
이 메세지는 윈도우즈 레지스트리에 컴포넌트 정보가 이상없이 등록되었다는 뜻이며 이것으로 컴포넌트 설치는 완료된 것이다.
 










    (2) 파일 업로드 페이지 제작

    아래와 같이 HTML 문서를 만들고, upload.htm 이라는 이름으로 저장한다.
     

      upload.htm


      <HTML>
      <BODY>
      <FORM METHOD=POST ACTION=upload.asp
                  ENCTYPE="multipart/form-data">
      <INPUT TYPE=FILE  NAME=FILE1 VALUE="검색..."><P>
      <INPUT TYPE=SUBMIT VALUE="파일 업로드">
      </FORM>
      </BODY>
      </HTML>

    다음으로, 파일을 업로드하는 upload.asp를 아래와 같이 작성한다.
     

      upload.asp


      <%
         Set uploadForm = Server.CreateObject ("SiteGalaxyUpload.Form")
         Set fso = Server.CreateObject("Scripting.FileSystemObject")

         uploadForm("FILE1").SaveAs(  
            "c:\temp\" & fso.GetFileName(uploadForm("FILE1").FilePath))
         Response.Write("File Upload Success!")
      %>


    이제, 앞에서 작성한 프로그램을 테스트 해 보기 위해서 upload.htm을 웹 브라우저로 연다.

    사용자 삽입 이미지


    마우스로 [찾아보기...]버튼을 눌러서 대화 상자를 이용하여 업로드하고자 하는 임의의 파일을 하나 선택한다. 여기서는 C: 드라이브에 있는 C:\bootlog.txt 파일을 선택했다고 가정해 보자.

    사용자 삽입 이미지

    파일의 선택이 끝나고 [파일 업로드] 버튼을 누르면, 파일이 웹 서버에 업로드 되는데,  내컴퓨터나 탐색기를 이용하여 C:\TEMP 디렉토리를 찾아가 보면, 파일이 업로드 되었는지를 확인할 수 있다.


    (3) MapPath를 이용하여 업로드 디렉토리 지정

    위의 예에서는 업로드된 파일들이 지정된 C:\TEMP 디렉토리로만 가도록 되어 있는데, 만일 이 디렉토리가 없는 경우에는 에러가 발생한다. 따라서, 서버객체의 하나인 MapPath 라는 것을 이용하여 웹페이지의 특정 가상디렉토리에 파일을 올리는 예를 공부할 필요가 있다.

      upload.asp


      <%
         Set uploadForm = Server.CreateObject ("SiteGalaxyUpload.Form")
         Set fso = Server.CreateObject("Scripting.FileSystemObject")

         strDir = Server.MapPath("/file")
         uploadForm("FILE1").SaveAs( strDir & "\" &_
               fso.GetFileName(uploadForm("FILE1").FilePath))
         Response.Write("File Upload Success!")
      %>

    위에서, Server.MapPath("/file")는 /file 이라는 가상디렉토리의 실제 경로를 리턴하는데, 사전에 웹공유 명령을 이용하여 임의의 디렉토리를 /file 이라는 가상디렉토리로 만들어 주어야 한다.


다. 파일 업로드 정보의 데이터베이스 관리

    업로드된 파일에 관한 정보와 업로드한 사람의 이름을 데이터베이스에 저장해 두었다가 필요시에 그 목록을 작성하거나 혹은 파일을 다운로드 할 수 있도록 하는 방법에 대해 살펴 본다. 파일을 업로드한 사람의 이름과 파일명을 입력하기 위한 업로드 폼 HTML은 다음과 같다.
     

      upload.htm


      <HTML>
      <BODY>
      <FORM METHOD=POST ACTION="UPLOAD.ASP" ENCTYPE="multipart/form-data">
         <INPUT TYPE=TEXT NAME="NAME" size=8>  <br>
         <INPUT TYPE=FILE NAME="UPFILE" VALUE="검색"> <br>
         <INPUT TYPE=SUBMIT VALUE="파일전송">
      </FORM>
      </BODY>
      </HTML>


    위의 폼으로부터 전송된 값을 저장할 수 있도록 데이터베이스에 작성자와 파일 두 개의 필드를 갖는 테이블을 만든후에 이를 fileupload 라는 이름으로 ODBC를 설정한다.
    다음으로 전송된 파일을 저장하기 위한 ASP 프로그램을 살펴보면 다음과 같다.

      upload.asp


      <HTML>
      <BODY>
      <%
        Set UploadForm=Server.CreateObject("SiteGalaxyUpload.Form")
        Set FSO=Server.CreateObject("Scripting.FileSystemObject")

        name   = UploadForm("NAME")
        filename = FSO.GetFileName(UploadForm("UPFILE").FilePath)
        strDir = Server.MapPath("/file")
        UploadForm("UPFILE").SaveAs(strDir & "\" & filename)

       'ODBC 를 이용한 데이터베이스 연결을 선언한다......................
        Set Dbcon = Server.CreateObject("ADODB.Connection")
        Dbcon.Open  "DSN=fileupload;uid=;pwd=;"

        strSql = " INSERT INTO fileupload (작성자, 파일) values ('" &_
                 name & "', '" & filename & "' )"
        Dbcon.Execute(strSql)
        Dbcon.Close

        Set Dbcon=Nothing
        Set FSO=Nothing
        Set UploadForm=nothing
      %>
        파일 업로드가 정상적으로 이루어졌습니다
      </BODY>
      </HTML>

    이제, 업로드된 파일들의 목록과 작성자를 화면에 나타낸 후에 파일에 다운로드 링크를 추가하여 웹으로부터 파일을 다운로드 받을 수 있도록 하는 프로그램을 작성하면 다음과 같다.

      view.asp


      <HTML>
      <BODY>
      <%
       'ODBC 를 이용한 데이터베이스 연결을 선언한다......................
        Set Dbcon = Server.CreateObject("ADODB.Connection")
        Dbcon.Open "DSN=fileupload;uid=;pwd=;"

        strSql = " SELECT 작성자, 파일 FROM fileupload "
        Set rs = Server.CreateObject("ADODB.RecordSet")
        rs.Open strSQL,Dbcon,adOpenStatic

       '해당 레코드가 있으면
        if not rs.EOF then
           do while not rs.EOF  
              filepath = "/file" &  rs("파일")
      %>        
              성  명: <%=rs("작성자")%> &nbsp;
              파일명: <%=rs("파일")%> &nbsp;
              <A HREF="<%=filepath%>">다운로드</A>
              <BR>
      <%
              rs.MoveNext
           loop
        else
      %>
            하나도 없습니다
      <%
        end if
        rs.Close
        Dbcon.Close
        Set Dbcon=Nothing
      %>
      </BODY>
      </HTML>

       

 



이 글은 "씨디맨" 의 동의 없이 전문 재배포 금지. 링크 및 트랙백은 허가 없이 무제한 허용 *  [자세히보기]

질문 또는 댓글을 남겨 주세요.

질문글은 무조건 답변 드리겠습니다. 이곳에 질문을 올려주세요.
이 글과 연관이 없는 급한 질문은 빠른 질문/답변을 이용해 주세요!

댓글 입력 폼

:)   :(   --;   :D   :O   :x   r:r   g;g   i;t   s;s

     이미지 업로드  [무료이미지 업로드 방법 설명]

  1. Dash Bell 2011.10.11 10:36 신고

    안녕하세요~

    글 감사히 잘봤습니다.

    질문하나 드려도 될까요?

    SiteGalaxyUpload 다운받아서,

    SiteGalaxyUpload.dll 파일을 /Windows/System32 에 복사했는데

    실행창에 regsvr32 c:\Windows\system32\SiteGalaxyUpload.dll 입력하면

    로드하지 못했다고 나오네요;

    '바이너리가 지정된 경로에 저장되었는지 확인하거나 디버그 하여 바이너리 또는 종속
    .dll파일에 문제가 있는지 확인하십시오. 지정된 모듈을 찾을 수 없습니다.'

    요로코롬 나오네요;; 재차 경로확인을 해봐도 분명 Windows 하위 System32에 dll파일을 옮겼는데 말이죠..

    무엇이 문제일까요?

    perm. |  mod/del. |  reply.