안규 공부방

ACTIVE SERVER PAGE > 글쓰기 (filename , Sitegalaxy)

등록일 : 2017-07-03 20:14 조회수 : 93,504

여기서는 (fileman.dll) 컴포넌트를 이용해서
자료실을 구축하는 방법을 기술하겠습니다. 컴포넌트는 자료실에서 다운 받을수 있습니다.
 
3.1.1. 컴포넌트를 서버(레지스트리) 등록 방법.
가. 먼저 Fileman.zip 압축을 푼다.
나. C:\Winnt\system32\inetsrv\cmpnts 에 fileman.dll를 복사한다.
다. C:\Winnt\system32\inetsrv\cmpnts >에서 regsvr32 Fileman.dll 이라고 친다.(등록)
라. Fileman.dll를 해제하고 싶다면 C:\Winnt\system32\inetsrv\cmpnts >regsvr32 Fileman.dll /u 라구 친다.

3.1.2. 자료실 글쓰기(write.asp)

<FORM ACTION="write_ok.asp" ENCTYPE="MULTIPART/FORM-DATA" METHOD="POST">
<INPUT TYPE="TEXT" NAME="NAME">
<INPUT TYPE="FILE" NAME="FILE1">
<input type="SUBMIT" value="등 록" name="write">
</FORM>

3.1.3. 자료실 자료 올리기(FileMan - Write_ok.asp)

<%
Set objFileMan = Server.CreateObject("FileMan.FileUpLoad")
strDirectory = "C:\Inetpub\wwwroot\download\" 

' 파일이 올려질 경로(strDirectory)를 지정...

attach_file = TRIM(objFileMan.GetValueByName("FILE1")) 

'화일은 attach_file 변수에 저장됩니다.
'fileman은 객체.GetValueByName 속성을 이용해 객체를 저장합니다.

Set Gdb = Server.CreateObject("ADODB.Connection")
Gdb.Open ("dsn=polcomm;uid=sa;pwd=;database="&dbname)

GSQL = "Select MAX(num) from "& tname & " "
Set GGrs = Server.CreateObject("ADODB.Recordset")
GGrs.Open GSQL,Gdb

If IsNULL(GGrs(0)) Then
  num=1
else
  num=GGrs(0)+1
End If

'num에 가장 큰값을 넣어줍니다.


If (attach_file="") Then
        attach_count=0
Else
        attach_count=1
End If

'지정된 파일이 없으면, attach_count=0이, 파일이 지정되어 있다면 1이 셋팅됩니다.

upsucc=1

if attach_count=0 Then
        filename="없음"
        nLen="0"
Else

filename = Mid(attach_file, InstrRev(attach_file, "\") + 1)
strFileName = strDirectory & filename
        on error resume next
        '--- 파일 저장
        strRet = objFileMan.SaveFile("FILE1", CStr(strFileName))
        if strRet="" then
           upsucc= 0
        Else
        objFileMan.GetFileContent "FILE1", "", nLen, ""                 
        End If

' 화일쓰기에 실패를 하면 upsucc에 0값이 들어가구, 그렆지 않으면 1값이 들어 갑니다.
' 그리구, 만약 파일명이 경로에 존재한다면, (if upsucc=0 then) 이면 존재한다는 메시지를
' 그렇지 않으면 데이터베이스에 내용을 저장하면 될 것이다.               
end if

if upsucc=0 then
response.write "파일이름이 이미 존재합니다."
else
file_name = filename
file_size = nLen
name = objFileMan.GetValueByName("name")

content = replace(content,"&","&")
content = replace(content,"<","<")
content = replace(content,">",">")

         SQL = "INSERT INTO databank (num,file_name,file_size,title,content,writeday,readnum,writer) VALUES "
         SQL = SQL & "( "& num & " ,'" & file_name & "','" & file_size & "','" & content & "',0,'" & writer & "') "
         Gdb.Execute SQL
%>


3.1.4. 자료실 자료 올리기(SiteGalaxy - Write_ok.asp)

<%
set db=Server.CreateObject("ADODB.Connection")
db.open("dsn=cak0280;uid=sa;pwd=;")
set UploadForm=Server.CreateObject("SiteGalaxyUpload.Form")

title=UploadForm("title")
file1=UploadForm("file1")
file2=UploadForm("file2")
set FSO=Server.CreateObject("Scripting.FileSystemObject")

   if Len(file1)>0 then     '파일이름이 존재하면 처리한다.
    strDir="c:\inetpub\wwwroot\test\"    '서버내 파일이 저장되는 위치
    att_file=UploadForm("file1").filepath  ' 저장될 파일의 이름을 얻는다.
    filesize1=UploadForm("file1").size    ' 저장될 파일의 크기를 얻는다.
   
    if filesize1<2000000 then    ' 파일용량을 제한할수 있습니다.
    filename1=mid(att_file, InstrRev(att_file,"\")+1)    '파일명을 얻는다.
    strname=Mid(filename1, 1, Instr(filename1,".")-1)    '확장자를 뺀 파일명을 얻는다.
    strExt=Mid(filename1,Instr(filename1,".")+1)         '확장자를 얻는다.

   bExist=True    ' 먼저 같은 이름이 존재한다는 가정하에 작업 시작합니다.
   strfilename = strDir & strname & "." & strExt    '저장될 파일을 만듭니다.
   cntFilename = 0    ' 파일이 존재할 경우 이름뒤에 붙일 숫자를 셋팅합니다.

do while bExist    ' 같은 파일이 없을 때까지 반복처리,
      if (FSO.FileExists(strfilename)) then    '같은 파일이 존재하는지 체크
       cntfilename=cntfilename+1
       filename1=strname&"_"&cntfilename&"."&strExt     
       '파일명이 존재할 경우 _1,_2 등으로 파일이름을 생성
       strfilename=strDir&filename1
     else    '같은 파일이 없을 때
       bExist=false
     end if
   loop
      UploadForm("file1").SaveAs strfilename    '실제 서버에 저장합니다.
   else
     response.write "화일의 용량이 너무 큽니다.
   end if
   end if

set Fso=nothing
set UploadForm=Nothing

이하는 title,filename1,filesize1,filename2,filesize2를 저장하면 됩니다.

//----------------------------------------------------------------------

얼마나 이해가 가셨는지 모르겠습니다....... 파일이 2개가 되든, 20개가 되든,,  
같은 작업을 반복으로  사용하면 된답니다....

그럼, 여러분도 성공하시길 바랍니다.
참,,, write.asp 에서 enctype은 반드시 대문자로 쓰셔야 합니다.
 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.