<% ' ---------------------------------------------------------------------------------------------------- ' ## 공통변수 및 사용자정의변수 정의 ' ---------------------------------------------------------------------------------------------------- ' DB 관련 변수 Dim dbConn, rs, rs2, var_SQL,var_SQL2, var_AddSQL, var_AddSQL2, i, j Dim paramInfo, paramInfos ' 파라미터 변수 Dim var_Target, var_Num ' 컬럼 변수 Dim col_file_seq, col_file_path, col_file_name, col_file_save ' 파일 관련 변수 Dim file_name, file_path Dim downSize : downSize = 1024 Dim fExt file_path = SERVER_UPLOAD_PATH ' 디버그 모드 'Call clsDB.SetDebugMode(True) On Error Resume Next ' ---------------------------------------------------------------------------------------------------- ' ## Receive Parameters ' ---------------------------------------------------------------------------------------------------- filename = clsFN.GetParameter(Request("file"), "") var_Target = clsFN.GetParameter(Request("target"), "") var_Num = clsFN.GetParameter(Request("num"), "") ' #################################################################################################### ' ## 파일 다운로드 수 증가 ' #################################################################################################### If clsFN.IsValid(var_Num) And clsFN.toNumeric(var_Num) <> 0 Then var_SQL = "UPDATE "& clsFN.convSql(var_Target) &"_FILE SET " var_SQL = var_SQL&" DOWN_COUNT = DOWN_COUNT + 1 " var_SQL = var_SQL&" WHERE FILE_SEQ = ? " paramInfo = Array( clsDB.MakeParam("@FILE_SEQ", adInteger, adParamInput, 0, var_Num) ) Call clsDB.ExecSQL(var_SQL, paramInfo, Nothing) End If ' #################################################################################################### ' ## 파일 정보 확인 ' #################################################################################################### If clsFN.IsValid(var_Num) And clsFN.toNumeric(var_Num) <> 0 Then var_SQL = " SELECT " var_SQL = var_SQL & " FILE_SEQ, FILE_PATH, FILE_NAME, FILE_SAVE, FILE_SIZE, DOWN_COUNT, REG_DATE " var_SQL = var_SQL & " FROM "& clsFN.convSql(var_Target) &"_FILE WITH(NOLOCK) " var_SQL = var_SQL & " WHERE FILE_SEQ = ? " var_SQL = var_SQL & " ORDER BY FILE_SEQ " paramInfo = Array( clsDB.MakeParam("@FILE_SEQ", adInteger, adParamInput, 0, var_Num) ) Set rs = clsDB.ExecSQLReturnRS(var_SQL, paramInfo, Nothing) If Not rs.EOF Then col_file_seq = Trim(rs("FILE_SEQ")) col_file_path = Trim(rs("FILE_PATH")) col_file_name = Trim(rs("FILE_NAME")) col_file_save = Trim(rs("FILE_SAVE")) End If clsDB.closeRS(rs) End If ' #################################################################################################### ' ## 파일 다운로드 ' #################################################################################################### '※ Window2003(IIS 6.0) 사용하는 경우 (기본 업로드,다운로드 버퍼링 설정용량 관련) ' C:\windows\system32\inetsrv\MetaBase.xml 에서 해당부분을 수정 ' - 다운로드 제한 기본값 : ' AspBufferingLimit="4194304" // 4MByte ' - 업로드 제한 기본값 : ' AspMaxRequestEntityAllowed="204800" // 200KByte ' - IIS 실행중 편집시 "다른 프로세스에서 사용중"이라고 나오는데, ' 반드시 IIS를 정지시킬 필요는 없고 IIS 속성에서 메타베이스 직접 편집허용 부분을 체크하면 편집이 가능. ' - DextUpload에 FileDownload는 FF에서 버그(파일확장자 뒤에 ","(콤마) 붙음)가 있어 사용 안함. ' '※ IIS7/7.5 파일 다운로드 오류 경우 ' IIS root에 "ASP>동작>청크 분할 인코딩 사용"의 기본이 True 입니다. 이것을 False 로 설정 Set fs = Server.CreateObject("Scripting.FileSystemObject") If fs.FileExists(file_path & filename) Then Set f = fs.GetFile(file_path & filename) ' DEXT 다운로드는 일부 브라우저에서 오류 발생 하여 사용 안함. If False Then Response.Buffer = False Response.AddHeader "Content-Disposition","attachment;filename=" & Server.URLPathEncode(f.Name) Response.AddHeader "Content-Length", f.Size Response.ContentType = "application/x-msdownload" Response.CacheControl = "public" Set objDownload = Server.CreateObject("DEXT.FileDownload") objDownload.Download file_path&filename Set objDownload = Nothing Else ' Response.ContentType = "application/unknown" ' Response.AddHeader "Content-Disposition","attachment; filename=" & Server.URLPathEncode(f.Name) ''//다운로드 받은 파일명 ' Set objStream = Server.CreateObject("ADODB.Stream") ' objStream.Open ' objStream.Type = 1 ' objStream.LoadFromFile file_path & filename ''//다운로드 전체 경로 ' download = objStream.Read ' Response.BinaryWrite download ' Set objstream = nothing fExt = Trim(Mid(filename, InstrRev(filename, ".")+1)) If InStr(","& DOWNLOAD_BLOCK_EXT &",", ","& fExt &",") > 0 Then Set fs = Nothing Set f = Nothing Call clsFN.JsAlert("다운로드가 불가능한 파일입니다.") End If Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = 1 objStream.LoadFromFile file_path & filename If col_file_name <> "" Then file_name = col_file_name Else file_name = f.Name End If Response.ContentType = "application/octet-stream" Response.AddHeader "Content-Disposition", "attachment;filename="& Server.UrlPathEncode(file_name) ' Response.AddHeader "Content-Length", objStream.Size ' 고도몰 웹나이트 방화벽에서 막힘 Response.Buffer = False Do Until objStream.Eos Or Not Response.IsClientConnected Response.BinaryWrite objStream.Read(downSize) Loop objStream.Close Set objstream = Nothing End If Set f = Nothing Else Response.Write "해당 파일을 찾을 수 없습니다." Call clsFN.JsAlert2("해당 파일을 찾을 수 없습니다.") End If ' ---------------------------------------------------------------------------------------------------- ' ## 자원 반환 ' ---------------------------------------------------------------------------------------------------- Set fs = Nothing %>