본문 바로가기
Web Program/Asp Lecture

ABC Upload 예제파일

by 현이빈이 2008. 9. 8.
반응형
 start | toatee
원문 http://blog.naver.com/toatee/20015181007
<!-- #include virtual = "/include/inc/NoCache.inc" -->
<!-- #include virtual = "/lib/dbCon.asp" -->

<% 
	Set theForm = Server.CreateObject("ABCUpload4.XForm")
	theForm.AbsolutePath = True '절대경로 사용가능
	theForm.Overwrite = True    '덮어쓰기 가능
	theForm.CodePage = 949      '한글파일 가능하게 %>


<%'----답변쓰기에서 넘어온 변수 / 에러시 항목을 다시 글쓰기 폼으로 전송 해야됨----%>
<form name="frmReplyBack" method=post action="tourphoto_wmd.asp">
 <input type="hidden" name="BBS_Num" value="<%=theForm("BBS_Num")%>">
 <input type="hidden" name="WriteGB" value="<%=theForm("WriteGB")%>">
 <input type="hidden" name="gotopage" value="<%=theForm("gotopage")%>">
 <input type="hidden" name="cate_sub" value="<%=theForm("cate_sub")%>">
</form>

<%  Dim Name, Title, Email, Content, Cate_Sub
    Dim Re_Num, Re_Step, Re_Level
	Dim theForm,AttachFile
	dim DirectoryPath,File,FileName,FileSize,FileWholePath 


'    ON ERROR RESUME NEXT

	Name        = Trim(theForm("txt_Name"))
	Email       = Trim(theForm("txt_Email"))
	Cate_Sub    = Trim(theForm("cob_Cate_Sub"))
	Title       = Trim(theForm("txt_Title"))
	Content     = Trim(theForm("txt_Content"))

 	Re_Num   = Trim(theForm("Re_Num"))
	Re_Step  = Trim(theForm("Re_Step"))
	Re_Level = Trim(theForm("Re_Level"))      


	DirectoryPath = Server.MapPath("SaveImageFiles") '이미지가 저장될 절대경로
	Set File = theForm("AttachFile")(1)

	'+++++++++++++파일 업로드+++++++++++++=
	If File.FileExists Then

	    FileName = File.SafeFileName

	    FileSize = File.Length
'	    FileType = File.FileType

	    if FileSize > 700000 then
	        Response.Write "<script language=javascript>"
	        Response.Write " alert('700KB 이상의 사이즈인 파일은 업로드하실 수 없습니다');"
	        Response.Write " history.back(-1);"
	        Response.Write "</script>"
	        Response.end
	    else
	        FileWholePath = GetUniqueName(FileName, DirectoryPath)
	        File.Save FileWholePath
	    End if

	End if

	'++++++++++완료++++++++++++++++++
   
  
'-----------------------------------------
'최재남--------
'파일이 올바르게 저장되었으면 dbInsert 하고
'아니면 에러 보내면서 다시 저장 하게 한다.
'올바르게 저장 되었는지 아는 방법은 asp의 파일 객체를 
'생성해서 체크한다. 위의 파일명을 가지고 같은 파일이
'있는지 폴더에서 찾는다.
'--------------------------------------------

 DIM FSystem, Folder_Dir, F1, AllFileCount
 Dim FileSaveYUMU

 SET FSystem = CreateObject("Scripting.FilesystemObject")

 SET Folder_Dir = Fsystem.GetFolder(DirectoryPath)  '폴더지정 
 Set AllFileCount = Folder_Dir.Files '--모든파일을 가져온다

 Const DeleteReadOnly = True

'FileSaveYUMU : 파일이 있는지 없는지 구분하는 변수
'초기값 없는 것으로 셋팅

 FileSaveYUMU="MU"
 For Each F1 in AllFileCount
     IF instr(F1.Name,FileName) <> "0" Then     'FileName : 찾고자 하는 파일명
        FileSaveYUMU="YU"
		Exit For
     END IF
 Next

 Set FSystem	  = Nothing 
 Set Folder_Dir   = Nothing 
 Set AllFileCount = Nothing  
 
 
 
'파일이 저장되었다면 dbInsert 해준다.

IF FileSaveYUMU = "YU" Then

	Call dbConnect()

    DBCon.BeginTrans
   
    IF theForm("WriteGB")="reply" Then '답변이다.

		SQL = "       Update TB_TOUR_BBS_TBL Set Re_Step = Re_Step + 1 "
		SQL = SQL & " Where  Re_Num=" & Cint(Re_Num) & " And Re_Step > " & Cint(Re_Step)
		DBcon.Execute(SQL)
		Re_Step  = Re_Step  + 1
		Re_Level = Re_Level + 1
	ELSE
		SQL = "       SELECT Case When Max(BBS_Num) IS Null Then 1 ELSE Max(BBS_Num)+1 End As Max_Value "
		SQL = SQL & " From TB_TOUR_BBS_TBL "
		SET RS = DBCon.Execute(SQL)
		Re_Num = RS(0)
		Call RSClose()
        Re_Step  = 0
		Re_Level = 0
	END IF


	SQL = " INSERT INTO TB_TOUR_BBS_TBL Values("
	SQL = SQL & "'001003'" '-- 여행과사진
	SQL = SQL & ",'" & Cate_Sub & "'"
	SQL = SQL & ","  & Cint(Re_num)
	SQL = SQL & ","  & Cint(Re_Step)
	SQL = SQL & ","  & Cint(Re_Level)
	SQL = SQL & ",'" & Title & "'"
	SQL = SQL & ",'" & Replace(Content,"'","") & "'"
	SQL = SQL & ",'" & Name & "'"
	SQL = SQL & ",'" & Email & "'"	
	SQL = SQL & ",0" '--댓글갯수
	SQL = SQL & ",0" '--조회수
	SQL = SQL & ",getdate()" '--등록일
	SQL = SQL & ",'" & DirectoryPath & "\'" '--이미지경로
	SQL = SQL & ",'" & FileName & "'"  '--이미지파일명	
	SQL = SQL & ",'" & Request.Cookies("pamtour_client")("UserID") & "'"
	SQL = SQL & ",'" & Request.Cookies("pamtour_client")("CompCD") & "')"

	DBcon.Execute(SQL)

	IF Err.Number = 0 Then
       DBCon.CommitTrans 
	   Call DBClose()

	   IF theForm("WriteGB") = "" Then '답변쓰기에서 온것이라면.
          Response.Redirect "./tourphoto_list.asp?Cate_Sub=" & theForm("Cate_Sub")
       ELSE
          Response.Redirect "./tourphoto_list.asp?Cate_Sub=" & Cate_Sub
	   END IF
    ELSE      
       DBCon.RollbackTrans
	   Call DBClose()
       Response.Write "<script language='javascript'>"
       Response.Write "alert('시스템에 오류가 발생 했습니다.\n\n       다시 작성해 주세요.');"

	   IF theForm("WriteGB") = "" Then '답변쓰기에서 온것이라면.
	      Response.Write "document.frmReplyBack.submit();"
	   ELSE
          Response.Write "history.back(-1);"
	   END IF
	   Response.Write "</script>"
    End IF 

    Response.End

ELSE  '--파일이 올바르게 저장되지 않았다

       Response.Write "<script language='javascript'>"
       Response.Write "alert('파일이 올바르게 저장되지 않았습니다.\n\n       다시 작성해 주세요.');"

	   IF theForm("WriteGB") = "" Then '답변쓰기에서 온것이라면.
	      Response.Write "document.frmReplyBack.submit();"
	   ELSE
          Response.Write "history.back(-1);"
	   END IF
	   Response.Write "</script>"

END IF

'-------------------------------------------------------------------------------------------------	
'유니크한 파일경로및 파일이름을 얻어내는 함수
Function GetUniqueName(byRef FileName, DirectoryPath)

    Dim Ext, FileWholePath, countFileName
	Dim fso, Exist

	Name = Mid(FileName, 1, InstrRev(FileName, ".") - 1) '확장자를 제외한 파일명
    Ext = Mid(FileName, InstrRev(FileName, ".") + 1) '확장자
	Set fso = Server.CreateObject("Scripting.FileSystemObject")

    Exist = True 
	'우선 같은이름의 파일이 존재한다고 가정

    FileWholePath = DirectoryPath & "\" & Name & "." & Ext
	'저장할 파일의 완전한 이름(완전한 물리적인 경로) 구성

    countFileName = 0 
	'파일이 존재할 경우, 이름 뒤에 붙일 숫자를 세팅함.

	Do While Exist ' 우선 있다고 생각함.
		If (fso.FileExists(FileWholePath)) Then ' 같은 이름의 파일이 있을 때
			countFileName = countFileName + 1 '파일명에 숫자를 붙인 새로운 파일 이름 생성
			FileName = Name & "(" & countFileName & ")." & Ext
			FileWholePath = DirectoryPath & "\" & FileName
		Else
			Exist = False
		End If
	Loop

	GetUniqueName = FileWholePath
End Function
'-------------------------------------------------------------------------------------------------%>
반응형