사이트 갤럭시를 이용한 asp의 파일업로 sitegalaxyupload

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


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


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



나. SiteGalaxyUpload 사용방법
    (1) SiteGalaxyUpload 컴포넌트 설치  

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

    2. 다운로드를 받았으면, WinZip을 이용하여 압축을 푼다. 풀게 되면 SiteGalaxyUpload.dll 이 풀릴 것이다.

    3. 작업 표시줄의 [시작] → [실행]을 클릭한다. 그리고 아래와 같이 
      regsvr32 [현재 SiteGalaxyUpload.dll이 있는 경로+파일명] 을 입력하고 [확인]을 누른다
      (아래의 경우는 SiteGalaxyUpload.dll이 C:\temp 밑에 있는 경우이다)

      .

    4. 4번의 과정이 성공적으로 이루어졌으면 아래와 같은 메세지를 볼 수 있다.

      “DllRegisterServer in c:\temp\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>


코멘트 쓰기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.

다음의 HTML 태그와 속성을 사용할 수 있습니다:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



배송정보
배송조회를 하시려면 송장번호를 클릭하세요
배송조회
상품명
주문번호
택배사
송장번호