여기서는 (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은 반드시 대문자로 쓰셔야 합니다.
|
|||||||||||