ClassicASP ABCUpload 컴포넌트 [개념정리]
페이지 정보
본문
Dim abc, oFile Set abc = Server.CreateObject("ABCUpload4.XForm") |
그리고, 폼에서 인코딩 타입이 바이너리로 지정되게 되면, 이 폼에서 전송된 값을 얻어오기 위해서는 더이상 Request 객체를 사용할 수가 없고, 대신 업로드 컴포넌트의 제공되는 메소드로 그값을 얻어와야 하기에, ABCUpload 컴포넌트의 경우는 그 메소드의 이름이 item 이기에 그 메소드를 사용해서 각각의 값들을 얻어오는 다음 코드를 보실 수가 있을 것이랍니다.
Dim name, mail, title, url, memo, pwd, ipaddr name = abc.item("name") mail = abc.item("mail") title = abc.item("title") url = abc.item("url") memo = abc.item("memo") ipaddr = abc.item("ipaddr") pwd = abc.item("pwd") |
ipaddr = abc.item("ipaddr") 라는 부분인데요. 이 부분은 현재 이글을 작성한 클라이언트의 IP 주소를 남기기 위한 것이지요. 사실, 이 부분은 이전에는 다음과 같은 코드로써 존재했었습니다.
<input type="hidden" name= "ipaddr"
value="<%=Request.ServerVariables("REMOTE_ADDR")%>">
Set oFile = abc("attachFile")(1)
이는 폼에서 넘어온 파일을 oFile 이라는 이름의 변수에다가 저장하는 부분입니다. 이로써 바이너리 파일은 oFile 이라는 변수에 모두 저장이 된 것이지요... ^^ 사실상 abc("attachFile")(1) 라는 코드가 리턴해주는 객체는 ABCUpload 에서 지원하는 XField 라는 객체입니다. 해서 oFile 이라는 변수에 로드된 것은 실제로는 XField 의 모습을 하고 있지요. 그러므로 우리는 oFile 이라는 객체변수를 통해서 XField의 모든 프로퍼티와 메소드를 사용할 수가 있게 됩니다.'실제적인 파일 업로드를 처리하는 부분
If oFile.FileExists Then
strFileName = oFile.SafeFileName
FileSize = oFile.Length
FileType = oFile.FileType
if oFile.Length > 4096000 then
Response.Write "<script language=javascript>"
Response.Write "alert(""4M 이상의 사이즈인 파일은 업로드하실 수 없습니다"");"
Response.Write "history.back();"
Response.Write "</script>"
Response.end
else
strFileWholePath = GetUniqueName(strFileName, DirectoryPath)
oFile.Save strFileWholePath
End if
End if
'파일 업로드 처리 완료..
Function GetUniqueName(byRef strFileName, DirectoryPath)
Dim strName, strExt
strName = Mid(strFileName, 1, InstrRev(strFileName, ".") - 1) ' 확장자를 제외한 파일명을 얻는다.
strExt = Mid(strFileName, InstrRev(strFileName, ".") + 1) '확장자를 얻는다
Dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Dim bExist : bExist = True
'우선 같은이름의 파일이 존재한다고 가정
Dim strFileWholePath : strFileWholePath = DirectoryPath & "\" & strName & "." & strExt
'저장할 파일의 완전한 이름(완전한 물리적인 경로) 구성
Dim countFileName : countFileName = 0
'파일이 존재할 경우, 이름 뒤에 붙일 숫자를 세팅함.
Do While bExist ' 우선 있다고 생각함.
If (fso.FileExists(strFileWholePath)) Then ' 같은 이름의 파일이 있을 때
countFileName = countFileName + 1 '파일명에 숫자를 붙인 새로운 파일 이름 생성
strFileName = strName & "(" & countFileName & ")." & strExt
strFileWholePath = DirectoryPath & "\" & strFileName
Else
bExist = False
End If
Loop
GetUniqueName = strFileWholePath
End Function
strFileWholePath = GetUniqueName(strFileName, DirectoryPath)
oFile.Save strFileWholePath
라는 두줄로 이 모든 것을 해결한 것이랍니다
자료출처
http://blog.naver.com/myo1026/23689455
댓글목록
등록된 댓글이 없습니다.