게시판 본문 ASP, ASP.NET, IIS & Script - Read Only

file upload 관련... upload소스파일 첨부합니다..
작성자: 조태응
작성일시: 2005-05-27 10:03,  조회수: 4,723
<%@ EnableSessionState=False %>
<%
    
    '****************************************************************
    '*  
    '*  # PROGRAM TITLE : FileCube... Version 0.0.7 Prepare
    '*  
    '*  # PROGRAM CONT. : 업로드 처리 페이지
    '*  
    '*  # FILE NAME     : upload.asp
    '*  
    '*  # MODIFICATIONS : 
    '*      1. 2003/08/07   송원석  프로그램 수정
    '*      2. 2003/08/14   송원석  프로그램 수정
    '*      3. 2003/12/17   송원석  프로그램 마지막 수정
    '*  
    '****************************************************************
    
    Option Explicit
    
    
    '****************************************************************
    '* 업로드 시간 제한을 위한 Timeout. 여기에서는 넉넉하게 60 분으로
    '* 설정하지만 실제로 Timeout 시간은 컴포넌트 차원에서 관리한다.
    '* 주의!!! : ABCUpload 컴포넌트는 '업로드 시간 제한 기능' 을 별도
    '* 로 지원하지 않는다.
    '****************************************************************
    
    Server.ScriptTimeout = 3600
    
    'On Error Resume Next
    
%>

    <!--#include file="lib/asp/fc_constant_info.asp"-->
    <!--#include file="lib/asp/fc_utility_class.asp"-->
    
<%
    
    '****************************************************************
    '* 변수 선언
    '****************************************************************
    
    Dim objUpload
    Dim objFSO
    Dim objFolder
    
    Dim strPath
    Dim strFileName
    Dim strIsOverwrite
    Dim strFullPathName
    
    Dim lngFileLength
    
    
    '****************************************************************
    '* 업로드 작업
    '****************************************************************
    
    If UCase(CONST_UPLOAD_COMPONENT) = "DXT" Then
    
        '****************************************************************
        '****************************************************************
        '* DEXTUpload 컴포넌트 2.0.1
        '****************************************************************
        '****************************************************************
        
        '****************************************************************
        '* 업로드 컴포넌트 개체 생성 및 기본 업로드 폴더 설정
        '* 주의!!! : DEXT.FileUpload 컴포넌트 사용시 반드시 객체를 생성한
        '* 직 후 DefaultPath 속성을 설정해야 한다. 만약 두 라인 사이에 다
        '* 른 코드가 존재하면 경우에 따라서 에러가 발생한다.
        '****************************************************************
        
        Set objUpload = Server.CreateObject("DEXT.FileUpload")
        objUpload.DefaultPath = CONST_HOSTING_ROOT
        Call CheckError("업로드 컴포넌트 개체 생성 및 기본 업로드 폴더 설정")
        
        
        '****************************************************************
        '* 업로드 파일 기본 정보
        '****************************************************************
        
        strPath        = Trim(objUpload("currPath"))
        strIsOverwrite = Trim(objUpload("isOverwrite"))
        
        '** 업로드 크기 제한
        objUpload.MaxFileLen = CLng(CONST_FILE_UPLOAD_LIMIT) * 1024 * 1024
        Call CheckError("업로드 파일 크기 제한")
        
        '** 업로드 Timeout
        If CONST_FILE_UPLOAD_TIMEOUT > 20 Then
            objUpload.UploadTimeout = 20 * 60
        ElseIf CONST_FILE_UPLOAD_TIMEOUT <= 0 Then
            objUpload.UploadTimeout = 5 * 60
        Else
            objUpload.UploadTimeout = CLng(CONST_FILE_UPLOAD_TIMEOUT) * 60
        End If
        Call CheckError("업로드 시간 제한")
        
        
        '****************************************************************
        '* 하드디스크의 총 사용 용량 점검 및 실제 파일 저장
        '****************************************************************
        
        If CheckCapacity(objUpload.FileLen) Then
            If CInt(strIsOverwrite) = 0 Then
                objUpload("strFilePath").Save strPath, False
            ElseIf CInt(strIsOverwrite) = 1 Then
                objUpload("strFilePath").Save strPath, True
            End If
        Else
            objUpload.DeleteAllSavedFiles
            Set objUpload = Nothing
            Response.End
        End If
        
        
        If Err.Number = -2147220992 Then
            Call FileSizeOverMSG()
            objUpload.DeleteAllSavedFiles
            Set objUpload = Nothing
            Response.End
        Else
            Call CheckError("업로드 파일 저장")
        End If
        
        
        '****************************************************************
        '* 업로드 컴포넌트 개체 제거
        '****************************************************************
        
        Set objUpload = Nothing
        
    ElseIf UCase(CONST_UPLOAD_COMPONENT) = "ABC" Then
    
        '****************************************************************
        '****************************************************************
        '* ABCUpload 컴포넌트 4.1 : 무료 컴포넌트
        '****************************************************************
        '****************************************************************
        
        '****************************************************************
        '* 업로드 컴포넌트 개체 생성 및 기본 속성 설정
        '* 주의!!! : ABCUpload4.XForm 컴포넌트에서 제공되는 MaxUploadSize
        '* 속성을 사용하여 업로드 할 수 있는 파일의 최대 크기를 지정할 수
        '* 가 있지만 그 사용법이 유연하지 못하고, 기본값이 8 Mega Byte 로
        '* 설정되어져 있으므로, 일단 이 값을 최대한 크게 설정한 후 메뉴얼
        '* 작업으로 업로드 파일의 크기 제한 기능을 구현한다.
        '* 주의!!! : ABCUpload 컴포넌트는 '업로드 시간 제한 기능' 을 별도
        '* 로 지원하지 않는다.
        '****************************************************************
        
        Set objUpload = Server.CreateObject("ABCUpload4.XForm")
        objUpload.MaxUploadSize = 2147483647    '** Long 형 최대값
        objUpload.AbsolutePath  = True
        strIsOverwrite = Trim(objUpload("isOverwrite"))
        If CInt(strIsOverwrite) = 0 Then
            objUpload.Overwrite = False
        ElseIf CInt(strIsOverwrite) = 1 Then
            objUpload.Overwrite = True
        End If
        
        Call CheckError("업로드 컴포넌트 개체 생성 및 기본 속성 설정")
        
        
        '****************************************************************
        '* 업로드 파일 기본 정보
        '****************************************************************
        
        strPath       = Trim(objUpload("currPath"))
        strFileName   = objUpload("strFilePath")(1).SafeFileName
        lngFileLength = objUpload("strFilePath")(1).Length
        
        
        '****************************************************************
        '* 파일 크기 제한 체크
        '****************************************************************
        
        If lngFileLength > CLng(CONST_FILE_UPLOAD_LIMIT) * 1024 * 1024 Then
            Call FileSizeOverMSG()
            Set objUpload = Nothing
            Response.End
        End If
        
        
        '****************************************************************
        '* 하드디스크의 총 사용 용량 점검 및 실제 파일 저장
        '****************************************************************
        
        If CheckCapacity(lngFileLength) Then
            If CInt(strIsOverwrite) = 0 Then
                strFullPathName = GetFileName(strPath, strFileName)
            ElseIf CInt(strIsOverwrite) = 1 Then
                strFullPathName = strPath & "\" & strFileName
            End If
            objUpload("strFilePath")(1).Save strFullPathName
            Call CheckError("업로드 파일 저장")
        Else
            Set objUpload = Nothing
            Response.End
        End If
        
        
        '****************************************************************
        '* 업로드 컴포넌트 개체 제거
        '****************************************************************
        
        Set objUpload = Nothing
        
    End If
    
    
    '****************************************************************
    '* 업로드 작업 종료 후 전체 사용 용량 계산
    '****************************************************************
    
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(CONST_HOSTING_ROOT) Then
        Set objFolder = objFSO.GetFolder(CONST_HOSTING_ROOT)
        Application.Lock
        Application("TOTAL") = CONST_FILECUBE_TOTAL_SIZE * 1048576
        Application("USED")  = objFolder.Size
        Application("RATIO") = FormatNumber(objFolder.Size / CONST_FILECUBE_TOTAL_SIZE * 100 / 1048576, 2)
        Application.Unlock
        Set objFolder = Nothing
    End If
    Set objFSO = Nothing
    
%>

    <script language="JavaScript" type="text/javascript">
    <!--
    top.frames["exp_left"].document.all.WAIT_MSG.style.display = "none";
    top.frames["exp_main"].document.all.WAIT_MSG.style.display = "none";
    top.frames["exp_main"].location.reload();
    //-->
    </script>
    
<%
    
    '****************************************************************
    '* 오류 검사 Function
    '****************************************************************
    
    Public Function CheckError(strWork)
    
        If Err.Number <> 0 Then
        
            With Response
                .Write "<script language=""JavaScript"" type=""text/javascript"">" & vbCRLF
                .Write "" & vbCRLF
                .Write "</script>" & vbCRLF
            End With
            
            If UCase(CONST_UPLOAD_COMPONENT) = "DXT" Then objUpload.DeleteAllSavedFiles
            Set objUpload = Nothing
            
            Response.End
            
        End If
        
    End Function
    
    
    '****************************************************************
    '* 파일 크기 제한 오류 메세지 Sub
    '****************************************************************
    
    Public Sub FileSizeOverMSG()
    
        With Response
            .Write "<script language=""JavaScript"" type=""text/javascript"">" & vbCRLF
            .Write "<!--" & vbCRLF
            .Write "top.frames[""exp_left""].document.all.WAIT_MSG.style.display = ""none"";" & vbCRLF
            .Write "top.frames[""exp_main""].document.all.WAIT_MSG.style.display = ""none"";" & vbCRLF
            .Write "alert(""현재 업로드 하려고 하는 파일의 크기가 관리자가 설정한 제한 용량인 " & CONST_FILE_UPLOAD_LIMIT & " MB 를 초과합니다.   "");" & vbCRLF
            .Write "//-->" & vbCRLF
            .Write "</script>" & vbCRLF
        End With
        
    End Sub
    
    
    '****************************************************************
    '* 하드디스크의 총 사용 용량 점검 Function
    '****************************************************************
    
    Public Function CheckCapacity(lngCurrentFileSize)
    
        CheckCapacity = True
        
        If CLng(lngCurrentFileSize) > 0 AND lngCurrentFileSize + Application("USED") > Application("TOTAL") Then
        
            With Response
                .Write "<script language=""JavaScript"" type=""text/javascript"">" & vbCRLF
                .Write "<!--" & vbCRLF
                .Write "top.frames[""exp_left""].document.all.WAIT_MSG.style.display = ""none"";" & vbCRLF
                .Write "top.frames[""exp_main""].document.all.WAIT_MSG.style.display = ""none"";" & vbCRLF
                .Write "alert(""할당된 여유 공간이 부족하여 파일을 업로드 할 수 없으므로 현재 업로드 작업은 취소됩니다.   "");" & vbCRLF
                .Write "//-->" & vbCRLF
                .Write "</script>" & vbCRLF
            End With
            
            CheckCapacity = False
            
        End If
        
    End Function
    
    
    '****************************************************************
    '* Public Function RemoveCRLF(strSource)
    '****************************************************************
    
    Public Function RemoveCRLF(strSource)
    
    'On Error Resume Next
    
        strSource = Replace(strSource, vbCR, " ")
        strSource = Replace(strSource, vbLF, " ")
        strSource = Replace(strSource, "  ", " ")
        strSource = Replace(strSource, "  ", " ")
        RemoveCRLF = strSource
        
    End Function
    
    
    '****************************************************************
    '* Public Function GetFileName(strPath, strFileName)
    '****************************************************************
    
    Public Function GetFileName(strPath, strFileName)
    
        Dim objFSO
        
        Dim strFullPathFileName
        Dim strPureName
        Dim strExt
        
        Dim iLoopCount
        Dim iPosition
        
        Dim aryBuffer
        
    'On Error Resume Next
    
        Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
        
        strFullPathFileName = strPath & "\" & strFileName
        iLoopCount = 2
        
        Do While objFSO.FileExists(strFullPathFileName)
            iPosition = InStrRev(strFileName, ".")
            If iPosition > 0 Then
                strPureName = Left(strFileName, iPosition - 1)
                strExt      = Right(strFileName, Len(strFileName) - iPosition)
            Else
                strPureName = strFileName
                strExt      = ""
            End If
            strFullPathFileName = strPath & "\" & strPureName & "(" & iLoopCount & ")." & strExt
            iLoopCount = iLoopCount + 1
        Loop
        
        GetFileName = strFullPathFileName
        Set objFSO = Nothing
        
    End Function
    
%>
IP 주소: 203.231.54.9
전체 2,095 건의 게시물, 84 페이지로 구성된 ASP, ASP.NET, IIS & Script 게시판의 40 페이지입니다.
게시물
1,154

랜덤 함수에서요.

궁금이

2005-06-07 1,037
1,153

re: 랜덤 함수에서요.

송원석

2005-06-07 2,847
1,152

정규식이 왜 실서버에서는 안될까요? [5]

바보똥개

2005-06-03 815
1,151

오랜만에 들리네요.

정보문

2005-06-02 2,878
1,150

re: 오랜만에 들리네요. [1]

송원석

2005-06-03 2,941
1,149

작업취소 메세지... ㅡㅡ;

훈스

2005-05-30 879
1,148

re: 작업취소 메세지... ㅡㅡ; [1]

송원석

2005-05-30 2,874
1,147

작업취소 메세지... [1]

훈스

2005-05-30 775
1,146

re: 작업취소 메세지...

훈스

2005-05-30 807
1,145

오랜만에 들립니다. ^^ 파일큐브에 대하여..

부푸러

2005-05-28 869
1,144

re: 오랜만에 들립니다. ^^ 파일큐브에 대하여.. [1]

송원석

2005-05-28 2,823
1,143

글이 밀려서 이쪽에 다시 올려요..

궁굼

2005-05-27 848
1,142

re: 글이 밀려서 이쪽에 다시 올려요..

송원석

2005-05-27 2,822
1,141

re: 글이 밀려서 이쪽에 다시 올려요.. [1]

궁굼

2005-06-03 778

file upload 관련... upload소스파일 첨부합니다..

조태응

2005-05-27 4,723
1,139

re: file upload 관련... upload소스파일 첨부합니다..

송원석

2005-05-27 2,989
1,138

file upload 관련...

조태응

2005-05-27 2,872
1,137

re: file upload 관련... [2]

송원석

2005-05-27 2,787
1,136

업로드가안됩니다...

조태응

2005-05-26 2,887
1,135

re: 업로드가안됩니다...

송원석

2005-05-27 2,802
1,134

파일큐브 대용량 파일 다운이 안될때?

훈스

2005-05-25 2,970
1,133

re: 파일큐브 대용량 파일 다운이 안될때?

송원석

2005-05-25 3,864
1,132

re: 파일큐브 대용량 파일 다운이 안될때?

훈스

2005-05-26 3,048
1,131

re: 파일큐브 대용량 파일 다운이 안될때?

송원석

2005-05-26 2,995
1,130

고용량 파일 다운로드 과정에서..에러.. [2]

김광식

2005-05-13 3,462