www.gusucode.com > CC校友录贴吧 CCBar源码程序asp编程 > class/class_file_up.asp
<% Dim objFileDataStream Class classFileUpLoad dim objForm,objFile,Version Public function Form(strForm) strForm=lcase(strForm) if not objForm.exists(strForm) then Form="" else Form=objForm(strForm) end if end function Public function File(strFile) strFile=lcase(strFile) if not objFile.exists(strFile) then set File=new FileInfo else set File=objFile(strFile) end if end function Private Sub Class_Initialize dim RequestData,sStart,vbCrlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile dim iFileSize,sFilePath,sFileType,sFormValue,sFileName dim iFindStart,iFindEnd dim iFormStart,iFormEnd,sFormName Version="CCASP HTTP上传程序 Version 2.0.1" set objForm=Server.CreateObject("Scripting.Dictionary") set objFile=Server.CreateObject("Scripting.Dictionary") if Request.TotalBytes<1 then Exit Sub set tStream = Server.CreateObject("adodb.stream") set objFileDataStream = Server.CreateObject("adodb.stream") objFileDataStream.Type = 1 objFileDataStream.Mode =3 objFileDataStream.Open objFileDataStream.Write Request.BinaryRead(Request.TotalBytes) objFileDataStream.Position=0 RequestData =objFileDataStream.Read iFormStart = 1 iFormEnd = LenB(RequestData) vbCrlf = chrB(13) & chrB(10) sStart = MidB(RequestData,1, InStrB(iFormStart,RequestData,vbCrlf)-1) iStart = LenB (sStart) iFormStart=iFormStart+iStart+1 while (iFormStart + 10) < iFormEnd iInfoEnd = InStrB(iFormStart,RequestData,vbCrlf & vbCrlf)+3 tStream.Type = 1 tStream.Mode =3 tStream.Open objFileDataStream.Position = iFormStart objFileDataStream.CopyTo tStream,iInfoEnd-iFormStart tStream.Position = 0 tStream.Type = 2 tStream.Charset ="gb2312" sInfo = tStream.ReadText tStream.Close '取得表单项目名称 iFormStart = InStrB(iInfoEnd,RequestData,sStart) iFindStart = InStr(22,sInfo,"name=""",1)+6 iFindEnd = InStr(iFindStart,sInfo,"""",1) sFormName = lcase(Mid (sinfo,iFindStart,iFindEnd-iFindStart)) '如果是文件 if InStr (45,sInfo,"filename=""",1) > 0 then set theFile=new FileInfo '取得文件名 iFindStart = InStr(iFindEnd,sInfo,"filename=""",1)+10 iFindEnd = InStr(iFindStart,sInfo,"""",1) sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart) theFile.FileName=getFileName(sFileName) theFile.FilePath=getFilePath(sFileName) '取得文件类型 iFindStart = InStr(iFindEnd,sInfo,"Content-Type: ",1)+14 iFindEnd = InStr(iFindStart,sInfo,vbCr) theFile.FileType =Mid (sinfo,iFindStart,iFindEnd-iFindStart) theFile.FileStart =iInfoEnd theFile.FileSize = iFormStart -iInfoEnd -3 theFile.FormName=sFormName if not objFile.Exists(sFormName) then objFile.add sFormName,theFile end if else '如果是表单项目 tStream.Type =1 tStream.Mode =3 tStream.Open objFileDataStream.Position = iInfoEnd objFileDataStream.CopyTo tStream,iFormStart-iInfoEnd-3 tStream.Position = 0 tStream.Type = 2 tStream.Charset ="gb2312" sFormValue = tStream.ReadText tStream.Close if objForm.Exists(sFormName) then objForm(sFormName)=objForm(sFormName)&", "&sFormValue else objForm.Add sFormName,sFormValue end if end if iFormStart=iFormStart+iStart+1 wend RequestData="" set tStream =nothing End Sub Private Sub Class_Terminate if Request.TotalBytes>0 then objForm.RemoveAll objFile.RemoveAll set objForm=nothing set objFile=nothing objFileDataStream.Close set objFileDataStream =nothing end if End Sub Private function GetFilePath(FullPath) If FullPath <> "" Then GetFilePath = left(FullPath,InStrRev(FullPath, "\")) Else GetFilePath = "" End If End function Private function GetFileName(FullPath) If FullPath <> "" Then GetFileName = mid(FullPath,InStrRev(FullPath, "\")+1) Else GetFileName = "" End If End function End Class Class FileInfo dim FormName,FileName,FilePath,FileSize,FileType,FileStart Private Sub Class_Initialize FileName = "" FilePath = "" FileSize = 0 FileStart= 0 FormName = "" FileType = "" End Sub Public function SaveAs(FullPath) dim dr,ErrorChar,i SaveAs=true if trim(fullpath)="" or FileStart=0 or FileName="" or right(fullpath,1)="/" then exit function set dr=CreateObject("Adodb.Stream") dr.Mode=3 dr.Type=1 dr.Open objFileDataStream.position=FileStart objFileDataStream.copyto dr,FileSize dr.SaveToFile FullPath,2 dr.Close set dr=nothing SaveAs=false end function End Class '格式后缀 Function FixName(UpFileExt) If IsEmpty(UpFileExt) Then Exit Function FixName = Lcase(UpFileExt) FixName = Replace(FixName,Chr(0),"") FixName = Replace(FixName,".","") FixName = Replace(FixName,"asp","") FixName = Replace(FixName,"asa","") FixName = Replace(FixName,"aspx","") FixName = Replace(FixName,"cer","") FixName = Replace(FixName,"cdx","") FixName = Replace(FixName,"htr","") End Function '文件Content-Type判断 Function CheckFileType(FileType) CheckFileType = False If Left(Cstr(Lcase(Trim(FileType))),6)="image/" Then CheckFileType = True End Function '判断文件类型是否合格 Function CheckFileExt(FileExt) Dim ForumUpload,i ForumUpload="gif,jpg,bmp,jpeg,png" ForumUpload=Split(ForumUpload,",") CheckFileExt=False For i=0 to UBound(ForumUpload) If LCase(FileExt)=Lcase(Trim(ForumUpload(i))) Then CheckFileExt=True Exit Function End If Next End Function '=================================================================== '= Sub : GetExtendName(strFileName) '= Time : Created At Nov,09,2003 '= Input : '= Description : Make file name by time '=================================================================== Function GetExtendName(strFileName) Dim strExtName strExtName = LCase(strFileName) strExtName = Right(strExtName,3) strExtName = Right(strExtName,3 - Instr(strExtName,".")) GetExtendName = FixName(strExtName) End Function '=================================================================== '= Sub : MakeFileName(strFileName) '= Time : Created At Nov,09,2003 '= Input : '= Description : Make file name by time '==================================================================== Function MakeFileName(strFileName) strFileName = Now() strFileName = Replace(strFileName,"-","") strFileName = Replace(strFileName," ","") strFileName = Replace(strFileName,":","") strFileName = Replace(strFileName,"PM","") strFileName = Replace(strFileName,"AM","") strFileName = Replace(strFileName,"上午","") strFileName = Replace(strFileName,"下午","") MakeFileName = strFileName End Function %>