게시판 본문 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 | 2005-06-07 | 2,847 | ||
1,152 |
바보똥개 |
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 | 2005-05-30 | 2,874 | ||
1,147 |
작업취소 메세지... [1] |
훈스 |
2005-05-30 | 775 |
1,146 |
훈스 |
2005-05-30 | 807 | |
1,145 |
부푸러 |
2005-05-28 | 869 | |
1,144 | 2005-05-28 | 2,823 | ||
1,143 |
궁굼 |
2005-05-27 | 848 | |
1,142 | 2005-05-27 | 2,822 | ||
1,141 |
궁굼 |
2005-06-03 | 778 | |
2005-05-27 | 4,723 | |||
1,139 | 2005-05-27 | 2,989 | ||
1,138 | 2005-05-27 | 2,872 | ||
1,137 | 2005-05-27 | 2,787 | ||
1,136 | 2005-05-26 | 2,887 | ||
1,135 | 2005-05-27 | 2,802 | ||
1,134 | 2005-05-25 | 2,970 | ||
1,133 | 2005-05-25 | 3,864 | ||
1,132 | 2005-05-26 | 3,048 | ||
1,131 | 2005-05-26 | 2,995 | ||
1,130 | 2005-05-13 | 3,462 |