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

file upload 관련... upload소스파일 첨부합니다..
작성자: 조태응
작성일시: 2005-05-27 10:03,  조회수: 5,010
<%@ 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 게시판의 1 페이지입니다.
게시물
2,208

win2008 iis에 관한 문의가 좀 있습니다.

이재성

2011-05-25 14,197
2,207

re: win2008 iis에 관한 문의가 좀 있습니다.

송원석

2011-05-27 6,350
2,206

전체선택관련

이석환

2011-05-20 124
2,205

re: 전체선택관련

송원석

2011-05-23 6,169
2,204

엑셀파일명 깨짐에 대해

이석환

2011-05-17 130
2,203

re: 엑셀파일명 깨짐에 대해

송원석

2011-05-17 5,950
2,202

동영상 탑재 사이트 구축 [1]

정보문

2011-05-12 5,822
2,201

re: 동영상 탑재 사이트 구축 [1]

송원석

2011-05-12 5,881
2,200

동시접속자가 많을 경우 XMLDOM 검색 처리 방법 문의

Tanhi

2011-04-24 6,112
2,199

re: 동시접속자가 많을 경우 XMLDOM 검색 처리 방법 문의

송원석

2011-04-25 5,686
2,197

framest 질문이요..

김종식

2011-03-30 228
2,196

re: framest 질문이요..

송원석

2011-03-31 5,732
2,195

자바스크립으로 된 장바구니 기능..

gosuzzang

2011-03-23 290
2,194

re: 자바스크립으로 된 장바구니 기능..

송원석

2011-03-24 6,187
2,193

Server.GetLastError 관련

이석환

2011-03-23 253
2,192

re: Server.GetLastError 관련 [2]

송원석

2011-03-24 6,135
2,191

파일 다운로드시

이석환

2011-03-18 345
2,190

re: 파일 다운로드시

송원석

2011-03-19 6,461
2,189

re: 파일 다운로드시

송원석

2011-03-21 5,775
2,188

re: 파일 다운로드시

이석환

2011-03-21 258
2,187

re: 파일 다운로드시

송원석

2011-03-21 6,236
2,186

iis 요청 필터링관련

질문

2011-03-18 311
2,185

re: iis 요청 필터링관련

송원석

2011-03-18 8,322
2,184

오류메시지 깨짐현상

이석환

2011-03-11 345
2,183

re: 오류메시지 깨짐현상

송원석

2011-03-14 9,404