各种ASP无组件上载,带进度条的实在太多,用起来也不方便,今天自己写了一个,希望大家给点意见

页面都是UTF-8 编码的,用的时候可根据自己页面编码转换

核心编码:SundyUpload.asp
例子:Example.asp

SundyUpload.asp代码如下:

ASP无组件上载,带进度条,多文件上载。。<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ASP无组件上载,带进度条,多文件上载。。
<%
ASP无组件上载,带进度条,多文件上载。。
Dim SundyUpload_SourceData
ASP无组件上载,带进度条,多文件上载。。Class SundyUpload
ASP无组件上载,带进度条,多文件上载。。  
Dim objForm,objFile,Version,objProgress
ASP无组件上载,带进度条,多文件上载。。    
Dim xmlPath,CharsetEncoding
ASP无组件上载,带进度条,多文件上载。。  
Public Function Form(strForm)
ASP无组件上载,带进度条,多文件上载。。    strForm
=lcase(strForm)
ASP无组件上载,带进度条,多文件上载。。    
If NOT objForm.exists(strForm) Then
ASP无组件上载,带进度条,多文件上载。。      Form
=""
ASP无组件上载,带进度条,多文件上载。。    
Else
ASP无组件上载,带进度条,多文件上载。。      Form
=objForm(strForm)
ASP无组件上载,带进度条,多文件上载。。    
End If
ASP无组件上载,带进度条,多文件上载。。  
End Function
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。  
Public Function File(strFile)
ASP无组件上载,带进度条,多文件上载。。    strFile
=lcase(strFile)
ASP无组件上载,带进度条,多文件上载。。    
If NOT objFile.exists(strFile) Then
ASP无组件上载,带进度条,多文件上载。。      
Set File=new FileInfo
ASP无组件上载,带进度条,多文件上载。。    
Else
ASP无组件上载,带进度条,多文件上载。。      
Set File=objFile(strFile)
ASP无组件上载,带进度条,多文件上载。。    
End If
ASP无组件上载,带进度条,多文件上载。。  
End Function
ASP无组件上载,带进度条,多文件上载。。  
ASP无组件上载,带进度条,多文件上载。。    
Public Sub UploadInit(progressXmlPath,charset)
ASP无组件上载,带进度条,多文件上载。。    
Dim RequestData,sStart,Crlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile
ASP无组件上载,带进度条,多文件上载。。        
Dim iFileSize,sFilePath,sFileType,sFormValue,sFileName
ASP无组件上载,带进度条,多文件上载。。        
Dim iFindStart,iFindEnd
ASP无组件上载,带进度条,多文件上载。。        
Dim iFormStart,iFormEnd,sFormName
ASP无组件上载,带进度条,多文件上载。。      
ASP无组件上载,带进度条,多文件上载。。        Version
="Upload Width Progress Bar Version 1.0"
ASP无组件上载,带进度条,多文件上载。。        
Set objForm=Server.CreateObject("Scripting.Dictionary")
ASP无组件上载,带进度条,多文件上载。。        
Set objFile=Server.CreateObject("Scripting.Dictionary")
ASP无组件上载,带进度条,多文件上载。。        
If Request.TotalBytes<1 Then Exit Sub
ASP无组件上载,带进度条,多文件上载。。        
Set tStream = Server.CreateObject("adodb.stream")
ASP无组件上载,带进度条,多文件上载。。        
Set SundyUpload_SourceData = Server.CreateObject("adodb.stream")
ASP无组件上载,带进度条,多文件上载。。        SundyUpload_SourceData.Type 
= 1
ASP无组件上载,带进度条,多文件上载。。        SundyUpload_SourceData.Mode 
=3
ASP无组件上载,带进度条,多文件上载。。        SundyUpload_SourceData.Open
ASP无组件上载,带进度条,多文件上载。。        
ASP无组件上载,带进度条,多文件上载。。        
Dim TotalBytes
ASP无组件上载,带进度条,多文件上载。。        
Dim ChunkReadSize
ASP无组件上载,带进度条,多文件上载。。        
Dim DataPart, PartSize
ASP无组件上载,带进度条,多文件上载。。        
Dim objProgress
ASP无组件上载,带进度条,多文件上载。。        
ASP无组件上载,带进度条,多文件上载。。        TotalBytes 
= Request.TotalBytes     ' 总大小
ASP无组件上载,带进度条,多文件上载。。
        ChunkReadSize = 64 * 1024    ' 分块大小64K
ASP无组件上载,带进度条,多文件上载。。
        BytesRead = 0
ASP无组件上载,带进度条,多文件上载。。        xmlPath 
= progressXmlPath
ASP无组件上载,带进度条,多文件上载。。        CharsetEncoding 
= charset
ASP无组件上载,带进度条,多文件上载。。        
If CharsetEncoding = "" Then
ASP无组件上载,带进度条,多文件上载。。          CharsetEncoding 
= "utf-8"
ASP无组件上载,带进度条,多文件上载。。        
End If
ASP无组件上载,带进度条,多文件上载。。        
Set objProgress = New Progress
ASP无组件上载,带进度条,多文件上载。。        objProgress.ProgressInit(xmlPath)
ASP无组件上载,带进度条,多文件上载。。        objProgress.UpdateProgress Totalbytes,
0
ASP无组件上载,带进度条,多文件上载。。        
'循环分块读取
ASP无组件上载,带进度条,多文件上载。。
        Do While BytesRead < TotalBytes
ASP无组件上载,带进度条,多文件上载。。            
'分块读取
ASP无组件上载,带进度条,多文件上载。。
            PartSize = ChunkReadSize
ASP无组件上载,带进度条,多文件上载。。            
If PartSize + BytesRead > TotalBytes Then PartSize = TotalBytes - BytesRead
ASP无组件上载,带进度条,多文件上载。。            DataPart 
= Request.BinaryRead(PartSize)
ASP无组件上载,带进度条,多文件上载。。            BytesRead 
= BytesRead + PartSize
ASP无组件上载,带进度条,多文件上载。。    
ASP无组件上载,带进度条,多文件上载。。            SundyUpload_SourceData.Write DataPart
ASP无组件上载,带进度条,多文件上载。。            
ASP无组件上载,带进度条,多文件上载。。            objProgress.UpdateProgress Totalbytes,BytesRead 
ASP无组件上载,带进度条,多文件上载。。        
Loop
ASP无组件上载,带进度条,多文件上载。。        
'SundyUpload_SourceData.Write  Request.BinaryRead(Request.TotalBytes)
ASP无组件上载,带进度条,多文件上载。。
        SundyUpload_SourceData.Position=0
ASP无组件上载,带进度条,多文件上载。。        RequestData 
=SundyUpload_SourceData.Read 
ASP无组件上载,带进度条,多文件上载。。    
ASP无组件上载,带进度条,多文件上载。。        iFormStart 
= 1
ASP无组件上载,带进度条,多文件上载。。        iFormEnd 
= LenB(RequestData)
ASP无组件上载,带进度条,多文件上载。。        Crlf 
= chrB(13& chrB(10)
ASP无组件上载,带进度条,多文件上载。。        sStart 
= MidB(RequestData,1, InStrB(iFormStart,RequestData,Crlf)-1)
ASP无组件上载,带进度条,多文件上载。。        iStart 
= LenB (sStart)
ASP无组件上载,带进度条,多文件上载。。        iFormStart
=iFormStart+iStart+1
ASP无组件上载,带进度条,多文件上载。。        
While (iFormStart + 10< iFormEnd 
ASP无组件上载,带进度条,多文件上载。。            iInfoEnd 
= InStrB(iFormStart,RequestData,Crlf & Crlf)+3
ASP无组件上载,带进度条,多文件上载。。            tStream.Type 
= 1
ASP无组件上载,带进度条,多文件上载。。            tStream.Mode 
=3
ASP无组件上载,带进度条,多文件上载。。            tStream.Open
ASP无组件上载,带进度条,多文件上载。。            SundyUpload_SourceData.Position 
= iFormStart
ASP无组件上载,带进度条,多文件上载。。            SundyUpload_SourceData.CopyTo tStream,iInfoEnd
-iFormStart
ASP无组件上载,带进度条,多文件上载。。            tStream.Position 
= 0
ASP无组件上载,带进度条,多文件上载。。            tStream.Type 
= 2
ASP无组件上载,带进度条,多文件上载。。            tStream.Charset 
=CharsetEncoding
ASP无组件上载,带进度条,多文件上载。。            sInfo 
= tStream.ReadText
ASP无组件上载,带进度条,多文件上载。。            tStream.Close
ASP无组件上载,带进度条,多文件上载。。            
'取得表单项目名称
ASP无组件上载,带进度条,多文件上载。。
            iFormStart = InStrB(iInfoEnd,RequestData,sStart)
ASP无组件上载,带进度条,多文件上载。。            iFindStart 
= InStr(22,sInfo,"name=""",1)+6
ASP无组件上载,带进度条,多文件上载。。            iFindEnd 
= InStr(iFindStart,sInfo,"""",1)
ASP无组件上载,带进度条,多文件上载。。            sFormName 
= lcase(Mid (sinfo,iFindStart,iFindEnd-iFindStart))
ASP无组件上载,带进度条,多文件上载。。            
'如果是文件
ASP无组件上载,带进度条,多文件上载。。
            If InStr (45,sInfo,"filename=""",1> 0 Then
ASP无组件上载,带进度条,多文件上载。。                
Set theFile=new FileInfo
ASP无组件上载,带进度条,多文件上载。。                
'取得文件名
ASP无组件上载,带进度条,多文件上载。。
                iFindStart = InStr(iFindEnd,sInfo,"filename=""",1)+10
ASP无组件上载,带进度条,多文件上载。。                iFindEnd 
= InStr(iFindStart,sInfo,"""",1)
ASP无组件上载,带进度条,多文件上载。。                sFileName 
= Mid (sinfo,iFindStart,iFindEnd-iFindStart)
ASP无组件上载,带进度条,多文件上载。。                theFile.FileName
=getFileName(sFileName)
ASP无组件上载,带进度条,多文件上载。。                theFile.FilePath
=getFilePath(sFileName)
ASP无组件上载,带进度条,多文件上载。。                
'取得文件类型
ASP无组件上载,带进度条,多文件上载。。
                iFindStart = InStr(iFindEnd,sInfo,"Content-Type: ",1)+14
ASP无组件上载,带进度条,多文件上载。。                iFindEnd 
= InStr(iFindStart,sInfo,vbCr)
ASP无组件上载,带进度条,多文件上载。。                theFile.FileType 
=Mid (sinfo,iFindStart,iFindEnd-iFindStart)
ASP无组件上载,带进度条,多文件上载。。                theFile.FileStart 
=iInfoEnd
ASP无组件上载,带进度条,多文件上载。。                theFile.FileSize 
= iFormStart -iInfoEnd -3
ASP无组件上载,带进度条,多文件上载。。                theFile.FormName
=sFormName
ASP无组件上载,带进度条,多文件上载。。                
If NOT objFile.Exists(sFormName) Then
ASP无组件上载,带进度条,多文件上载。。                    objFile.add sFormName,theFile
ASP无组件上载,带进度条,多文件上载。。                
End If
ASP无组件上载,带进度条,多文件上载。。            
Else
ASP无组件上载,带进度条,多文件上载。。                
'如果是表单项目
ASP无组件上载,带进度条,多文件上载。。
                tStream.Type =1
ASP无组件上载,带进度条,多文件上载。。                tStream.Mode 
=3
ASP无组件上载,带进度条,多文件上载。。                tStream.Open
ASP无组件上载,带进度条,多文件上载。。                SundyUpload_SourceData.Position 
= iInfoEnd 
ASP无组件上载,带进度条,多文件上载。。                SundyUpload_SourceData.CopyTo tStream,iFormStart
-iInfoEnd-3
ASP无组件上载,带进度条,多文件上载。。                tStream.Position 
= 0
ASP无组件上载,带进度条,多文件上载。。                tStream.Type 
= 2
ASP无组件上载,带进度条,多文件上载。。                tStream.Charset 
= CharsetEncoding
ASP无组件上载,带进度条,多文件上载。。                sFormValue 
= tStream.ReadText 
ASP无组件上载,带进度条,多文件上载。。                tStream.Close
ASP无组件上载,带进度条,多文件上载。。                
If objForm.Exists(sFormName) Then
ASP无组件上载,带进度条,多文件上载。。                    objForm(sFormName)
=objForm(sFormName)&""&sFormValue          
ASP无组件上载,带进度条,多文件上载。。                
Else
ASP无组件上载,带进度条,多文件上载。。                    objForm.Add sFormName,sFormValue
ASP无组件上载,带进度条,多文件上载。。                
End If
ASP无组件上载,带进度条,多文件上载。。            
End If
ASP无组件上载,带进度条,多文件上载。。            iFormStart
=iFormStart+iStart+1
ASP无组件上载,带进度条,多文件上载。。        
Wend
ASP无组件上载,带进度条,多文件上载。。        RequestData
=""
ASP无组件上载,带进度条,多文件上载。。        
Set tStream = Nothing      
ASP无组件上载,带进度条,多文件上载。。    
End Sub
ASP无组件上载,带进度条,多文件上载。。    
Private Sub Class_Initialize 
ASP无组件上载,带进度条,多文件上载。。        
ASP无组件上载,带进度条,多文件上载。。    
End Sub
ASP无组件上载,带进度条,多文件上载。。    
ASP无组件上载,带进度条,多文件上载。。    
Private Sub Class_Terminate  
ASP无组件上载,带进度条,多文件上载。。      
If Request.TotalBytes>0 Then
ASP无组件上载,带进度条,多文件上载。。            objForm.RemoveAll
ASP无组件上载,带进度条,多文件上载。。            objFile.RemoveAll
ASP无组件上载,带进度条,多文件上载。。            
Set objForm=Nothing
ASP无组件上载,带进度条,多文件上载。。            
Set objFile=Nothing
ASP无组件上载,带进度条,多文件上载。。            SundyUpload_SourceData.Close
ASP无组件上载,带进度条,多文件上载。。            
Set SundyUpload_SourceData = Nothing
ASP无组件上载,带进度条,多文件上载。。      
End If
ASP无组件上载,带进度条,多文件上载。。        
Set objProgress = Nothing
ASP无组件上载,带进度条,多文件上载。。        
Set objFso = Server.CreateObject("Scripting.FileSystemObject")
ASP无组件上载,带进度条,多文件上载。。        
If objFso.FileExists(xmlPath) Then
ASP无组件上载,带进度条,多文件上载。。          objFso.DeleteFile(xmlPath)
ASP无组件上载,带进度条,多文件上载。。        
End If
ASP无组件上载,带进度条,多文件上载。。        
Set objFso = Nothing
ASP无组件上载,带进度条,多文件上载。。    
End Sub
ASP无组件上载,带进度条,多文件上载。。 
ASP无组件上载,带进度条,多文件上载。。    
Private Function GetFilePath(FullPath)
ASP无组件上载,带进度条,多文件上载。。        
If FullPath <> "" Then
ASP无组件上载,带进度条,多文件上载。。          GetFilePath 
= left(FullPath,InStrRev(FullPath, ""))
ASP无组件上载,带进度条,多文件上载。。        
Else
ASP无组件上载,带进度条,多文件上载。。          GetFilePath 
= ""
ASP无组件上载,带进度条,多文件上载。。        
End If
ASP无组件上载,带进度条,多文件上载。。    
End Function
ASP无组件上载,带进度条,多文件上载。。 
ASP无组件上载,带进度条,多文件上载。。    
Private Function GetFileName(FullPath)
ASP无组件上载,带进度条,多文件上载。。        
If FullPath <> "" Then
ASP无组件上载,带进度条,多文件上载。。          GetFileName 
= mid(FullPath,InStrRev(FullPath, "")+1)
ASP无组件上载,带进度条,多文件上载。。        
Else
ASP无组件上载,带进度条,多文件上载。。          GetFileName 
= ""
ASP无组件上载,带进度条,多文件上载。。        
End If
ASP无组件上载,带进度条,多文件上载。。    
End Function
ASP无组件上载,带进度条,多文件上载。。
End Class
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。Class FileInfo
ASP无组件上载,带进度条,多文件上载。。  
Dim FormName,FileName,FilePath,FileSize,FileType,FileStart
ASP无组件上载,带进度条,多文件上载。。  
Private Sub Class_Initialize 
ASP无组件上载,带进度条,多文件上载。。    FileName 
= ""
ASP无组件上载,带进度条,多文件上载。。    FilePath 
= ""
ASP无组件上载,带进度条,多文件上载。。    FileSize 
= 0
ASP无组件上载,带进度条,多文件上载。。    FileStart
= 0
ASP无组件上载,带进度条,多文件上载。。    FormName 
= ""
ASP无组件上载,带进度条,多文件上载。。    FileType 
= ""
ASP无组件上载,带进度条,多文件上载。。  
End Sub
ASP无组件上载,带进度条,多文件上载。。  
ASP无组件上载,带进度条,多文件上载。。    
Public Function SaveAs(FullPath)
ASP无组件上载,带进度条,多文件上载。。        
Dim dr,ErrorChar,i
ASP无组件上载,带进度条,多文件上载。。        SaveAs
=True
ASP无组件上载,带进度条,多文件上载。。        
If trim(fullpath)="" or FileStart=0 or FileName="" or right(fullpath,1)="/" Then Exit Function
ASP无组件上载,带进度条,多文件上载。。        
Set dr=CreateObject("Adodb.Stream")
ASP无组件上载,带进度条,多文件上载。。        dr.Mode
=3
ASP无组件上载,带进度条,多文件上载。。        dr.Type
=1
ASP无组件上载,带进度条,多文件上载。。        dr.Open
ASP无组件上载,带进度条,多文件上载。。        SundyUpload_SourceData.position
=FileStart
ASP无组件上载,带进度条,多文件上载。。        SundyUpload_SourceData.copyto dr,FileSize
ASP无组件上载,带进度条,多文件上载。。        dr.SaveToFile FullPath,
2
ASP无组件上载,带进度条,多文件上载。。        dr.Close
ASP无组件上载,带进度条,多文件上载。。        
Set dr=Nothing 
ASP无组件上载,带进度条,多文件上载。。        SaveAs
=False
ASP无组件上载,带进度条,多文件上载。。    
End Function
ASP无组件上载,带进度条,多文件上载。。
End Class
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。Class Progress
ASP无组件上载,带进度条,多文件上载。。  
Dim objDom,xmlPath
ASP无组件上载,带进度条,多文件上载。。    
Dim startTime
ASP无组件上载,带进度条,多文件上载。。  
Private Sub Class_Initialize
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。    
End Sub
ASP无组件上载,带进度条,多文件上载。。    
ASP无组件上载,带进度条,多文件上载。。    
Public Sub ProgressInit(xmlPathTmp)
ASP无组件上载,带进度条,多文件上载。。      
Dim objRoot,objChild
ASP无组件上载,带进度条,多文件上载。。        
Dim objPI
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。        xmlPath 
= xmlPathTmp
ASP无组件上载,带进度条,多文件上载。。        
Set objDom = Server.CreateObject("Microsoft.XMLDOM")
ASP无组件上载,带进度条,多文件上载。。        
Set objRoot = objDom.createElement("progress")
ASP无组件上载,带进度条,多文件上载。。        objDom.appendChild objRoot
ASP无组件上载,带进度条,多文件上载。。        
ASP无组件上载,带进度条,多文件上载。。        
Set objChild = objDom.createElement("totalbytes")
ASP无组件上载,带进度条,多文件上载。。        objChild.Text 
= "0"
ASP无组件上载,带进度条,多文件上载。。        objRoot.appendChild objChild
ASP无组件上载,带进度条,多文件上载。。        
Set objChild = objDom.createElement("uploadbytes")
ASP无组件上载,带进度条,多文件上载。。        objChild.Text 
= "0"
ASP无组件上载,带进度条,多文件上载。。        objRoot.appendChild objChild
ASP无组件上载,带进度条,多文件上载。。        
Set objChild = objDom.createElement("uploadpercent")
ASP无组件上载,带进度条,多文件上载。。        objChild.Text 
= "0%"
ASP无组件上载,带进度条,多文件上载。。        objRoot.appendChild objChild
ASP无组件上载,带进度条,多文件上载。。        
Set objChild = objDom.createElement("uploadspeed")
ASP无组件上载,带进度条,多文件上载。。        objChild.Text 
= "0"
ASP无组件上载,带进度条,多文件上载。。        objRoot.appendChild objChild
ASP无组件上载,带进度条,多文件上载。。        
Set objChild = objDom.createElement("totaltime")
ASP无组件上载,带进度条,多文件上载。。        objChild.Text 
= "00:00:00"
ASP无组件上载,带进度条,多文件上载。。        objRoot.appendChild objChild
ASP无组件上载,带进度条,多文件上载。。        
Set objChild = objDom.createElement("lefttime")
ASP无组件上载,带进度条,多文件上载。。        objChild.Text 
= "00:00:00"
ASP无组件上载,带进度条,多文件上载。。        objRoot.appendChild objChild
ASP无组件上载,带进度条,多文件上载。。        
ASP无组件上载,带进度条,多文件上载。。        
Set objPI = objDom.createProcessingInstruction("xml","version='1.0' encoding='utf-8'")
ASP无组件上载,带进度条,多文件上载。。        objDom.insertBefore objPI, objDom.childNodes(
0)
ASP无组件上载,带进度条,多文件上载。。        objDom.Save xmlPath
ASP无组件上载,带进度条,多文件上载。。        
Set objPI = Nothing
ASP无组件上载,带进度条,多文件上载。。        
Set objChild = Nothing
ASP无组件上载,带进度条,多文件上载。。        
Set objRoot = Nothing
ASP无组件上载,带进度条,多文件上载。。        
Set objDom = Nothing
ASP无组件上载,带进度条,多文件上载。。    
End Sub
ASP无组件上载,带进度条,多文件上载。。    
ASP无组件上载,带进度条,多文件上载。。    
Sub UpdateProgress(tBytes,rBytes)
ASP无组件上载,带进度条,多文件上载。。      
Dim eTime,currentTime,speed,totalTime,leftTime,percent
ASP无组件上载,带进度条,多文件上载。。        
If rBytes = 0 Then
ASP无组件上载,带进度条,多文件上载。。            startTime 
= Timer
ASP无组件上载,带进度条,多文件上载。。            
Set objDom = Server.CreateObject("Microsoft.XMLDOM")
ASP无组件上载,带进度条,多文件上载。。            objDom.load(xmlPath)
ASP无组件上载,带进度条,多文件上载。。            objDom.selectsinglenode(
"//totalbytes").text=tBytes
ASP无组件上载,带进度条,多文件上载。。            objDom.save(xmlPath)
ASP无组件上载,带进度条,多文件上载。。        
Else
ASP无组件上载,带进度条,多文件上载。。          speed 
= 0.0001
ASP无组件上载,带进度条,多文件上载。。          currentTime 
= Timer
ASP无组件上载,带进度条,多文件上载。。        eTime 
= currentTime - startTime
ASP无组件上载,带进度条,多文件上载。。            
If eTime>0 Then speed = rBytes / eTime
ASP无组件上载,带进度条,多文件上载。。            totalTime 
= tBytes / speed
ASP无组件上载,带进度条,多文件上载。。            leftTime 
= (tBytes - rBytes) / speed
ASP无组件上载,带进度条,多文件上载。。            percent 
= Round(rBytes *100 / tBytes)
ASP无组件上载,带进度条,多文件上载。。            
'objDom.selectsinglenode("//uploadbytes").text = rBytes
ASP无组件上载,带进度条,多文件上载。。
            'objDom.selectsinglenode("//uploadspeed").text = speed
ASP无组件上载,带进度条,多文件上载。。
            'objDom.selectsinglenode("//totaltime").text = totalTime
ASP无组件上载,带进度条,多文件上载。。
            'objDom.selectsinglenode("//lefttime").text = leftTime
ASP无组件上载,带进度条,多文件上载。。
            objDom.selectsinglenode("//uploadbytes").text = FormatFileSize(rBytes) & " / " & FormatFileSize(tBytes)
ASP无组件上载,带进度条,多文件上载。。            objDom.selectsinglenode(
"//uploadpercent").text = percent
ASP无组件上载,带进度条,多文件上载。。            objDom.selectsinglenode(
"//uploadspeed").text = FormatFileSize(speed) & "/sec"
ASP无组件上载,带进度条,多文件上载。。            objDom.selectsinglenode(
"//totaltime").text = SecToTime(totalTime)
ASP无组件上载,带进度条,多文件上载。。            objDom.selectsinglenode(
"//lefttime").text = SecToTime(leftTime)
ASP无组件上载,带进度条,多文件上载。。            objDom.save(xmlPath)        
ASP无组件上载,带进度条,多文件上载。。        
End If
ASP无组件上载,带进度条,多文件上载。。    
End Sub
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。    
private Function SecToTime(sec)
ASP无组件上载,带进度条,多文件上载。。        
Dim h:h = "0"
ASP无组件上载,带进度条,多文件上载。。        
Dim m:m = "0"
ASP无组件上载,带进度条,多文件上载。。        
Dim s:s = "0"
ASP无组件上载,带进度条,多文件上载。。        h 
= round(sec / 3600)
ASP无组件上载,带进度条,多文件上载。。        m 
= round( (sec mod 3600/ 60)
ASP无组件上载,带进度条,多文件上载。。        s 
= round(sec mod 60)
ASP无组件上载,带进度条,多文件上载。。        
If LEN(h)=1 Then h = "0" & h
ASP无组件上载,带进度条,多文件上载。。        
If LEN(m)=1 Then m = "0" & m
ASP无组件上载,带进度条,多文件上载。。        
If LEN(s)=1 Then s = "0" & s
ASP无组件上载,带进度条,多文件上载。。        SecToTime 
= (h & ":" & m & ":" & s)
ASP无组件上载,带进度条,多文件上载。。    
End Function
ASP无组件上载,带进度条,多文件上载。。        
ASP无组件上载,带进度条,多文件上载。。    
private Function FormatFileSize(fsize)
ASP无组件上载,带进度条,多文件上载。。        
Dim radio,k,m,g,unitTMP
ASP无组件上载,带进度条,多文件上载。。        k 
= 1024
ASP无组件上载,带进度条,多文件上载。。        m 
= 1024*1024
ASP无组件上载,带进度条,多文件上载。。        g 
= 1024*1024*1024
ASP无组件上载,带进度条,多文件上载。。        radio 
= 1
ASP无组件上载,带进度条,多文件上载。。        
If Fix(fsize / g) > 0.0 Then
ASP无组件上载,带进度条,多文件上载。。            unitTMP 
= "GB"
ASP无组件上载,带进度条,多文件上载。。            radio 
= g
ASP无组件上载,带进度条,多文件上载。。        
ElseIf Fix(fsize / m) > 0 Then
ASP无组件上载,带进度条,多文件上载。。            unitTMP 
= "MB"
ASP无组件上载,带进度条,多文件上载。。            radio 
= m
ASP无组件上载,带进度条,多文件上载。。        
ElseIf Fix(fsize / k) > 0 Then
ASP无组件上载,带进度条,多文件上载。。            unitTMP 
= "KB"
ASP无组件上载,带进度条,多文件上载。。            radio 
= k
ASP无组件上载,带进度条,多文件上载。。        
Else
ASP无组件上载,带进度条,多文件上载。。            unitTMP 
= "B"
ASP无组件上载,带进度条,多文件上载。。            radio 
= 1
ASP无组件上载,带进度条,多文件上载。。        
End If
ASP无组件上载,带进度条,多文件上载。。        
If radio = 1 Then
ASP无组件上载,带进度条,多文件上载。。            FormatFileSize 
= fsize & "&nbsp;" & unitTMP
ASP无组件上载,带进度条,多文件上载。。        
Else
ASP无组件上载,带进度条,多文件上载。。            FormatFileSize 
= FormatNumber(fsize/radio,3& unitTMP
ASP无组件上载,带进度条,多文件上载。。        
End If
ASP无组件上载,带进度条,多文件上载。。    
End Function
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。    
Private Sub Class_Terminate  
ASP无组件上载,带进度条,多文件上载。。      
Set objDom = Nothing
ASP无组件上载,带进度条,多文件上载。。    
End Sub
ASP无组件上载,带进度条,多文件上载。。
End Class
ASP无组件上载,带进度条,多文件上载。。%
>
ASP无组件上载,带进度条,多文件上载。。
<script language="javascript">
ASP无组件上载,带进度条,多文件上载。。
//启动进度条
ASP无组件上载,带进度条,多文件上载。。
function startProgress(xmlPath){
ASP无组件上载,带进度条,多文件上载。。  displayProgress();
ASP无组件上载,带进度条,多文件上载。。    setProgressDivPos();
ASP无组件上载,带进度条,多文件上载。。    setTimeout(
"DisplayProgressBar('" + xmlPath + "')",500);
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。
function DisplayProgressBar(xmlPath){
ASP无组件上载,带进度条,多文件上载。。    var xmlDoc 
= new ActiveXObject("Msxml2.DOMDocument.3.0");
ASP无组件上载,带进度条,多文件上载。。    xmlDoc.async 
= false;
ASP无组件上载,带进度条,多文件上载。。    xmlDoc.load(xmlPath);
ASP无组件上载,带进度条,多文件上载。。    
if (xmlDoc.parseError.errorCode!=0){
ASP无组件上载,带进度条,多文件上载。。        var 
error = xmlDoc.parseError;
ASP无组件上载,带进度条,多文件上载。。        alert(
error.reason)
ASP无组件上载,带进度条,多文件上载。。        setTimeout(
"DisplayProgressBar('" + xmlPath + "')",1000);
ASP无组件上载,带进度条,多文件上载。。        return;
ASP无组件上载,带进度条,多文件上载。。    }
ASP无组件上载,带进度条,多文件上载。。    var root 
= xmlDoc.documentElement;   //根节点
ASP无组件上载,带进度条,多文件上载。。    var totalbytes 
= root.childNodes(0).text;
ASP无组件上载,带进度条,多文件上载。。    var uploadbytes 
= root.childNodes(1).text;
ASP无组件上载,带进度条,多文件上载。。    var percent 
= root.childNodes(2).text;
ASP无组件上载,带进度条,多文件上载。。    ProgressPercent.innerHTML 
= percent + "%";
ASP无组件上载,带进度条,多文件上载。。    ProgressBar.style.width 
= percent + "%";
ASP无组件上载,带进度条,多文件上载。。    uploadSize.innerHTML 
= uploadbytes;
ASP无组件上载,带进度条,多文件上载。。  uploadSpeed.innerHTML 
= root.childNodes(3).text;
ASP无组件上载,带进度条,多文件上载。。    totalTime.innerHTML 
= root.childNodes(4).text;
ASP无组件上载,带进度条,多文件上载。。    leftTime.innerHTML 
= root.childNodes(5).text;
ASP无组件上载,带进度条,多文件上载。。    
if (percent<100){
ASP无组件上载,带进度条,多文件上载。。      setTimeout(
"DisplayProgressBar('" + xmlPath + "')",1000);
ASP无组件上载,带进度条,多文件上载。。    }
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。
function displayProgress(){
ASP无组件上载,带进度条,多文件上载。。    var objProgress 
= document.getElementById("Progress");
ASP无组件上载,带进度条,多文件上载。。  objProgress.style.display 
= "";
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
function closeProgress(){
ASP无组件上载,带进度条,多文件上载。。    var objProgress 
= document.getElementById("Progress");
ASP无组件上载,带进度条,多文件上载。。  objProgress.style.display 
= "none";
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
function setProgressDivPos(){
ASP无组件上载,带进度条,多文件上载。。    var objProgress 
= document.getElementById("Progress");
ASP无组件上载,带进度条,多文件上载。。    objProgress.style.top 
= document.body.scrollTop+(document.body.clientHeight-document.getElementById("Progress").offsetHeight)/2
ASP无组件上载,带进度条,多文件上载。。    objProgress.style.left 
= document.body.scrollLeft+(document.body.clientWidth-document.getElementById("Progress").offsetWidth)/2;
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
</script>
ASP无组件上载,带进度条,多文件上载。。
<style type="text/css">
ASP无组件上载,带进度条,多文件上载。。.progress {
ASP无组件上载,带进度条,多文件上载。。    position: absolute;
ASP无组件上载,带进度条,多文件上载。。    padding: 4px;
ASP无组件上载,带进度条,多文件上载。。    top: 
50;
ASP无组件上载,带进度条,多文件上载。。    
left400;
ASP无组件上载,带进度条,多文件上载。。    font
-family: Verdana, Helvetica, Arial, sans-serif;
ASP无组件上载,带进度条,多文件上载。。    font
-size: 12px;
ASP无组件上载,带进度条,多文件上载。。    width: 250px;
ASP无组件上载,带进度条,多文件上载。。    height:100px;
ASP无组件上载,带进度条,多文件上载。。    background: #FFFBD1;
ASP无组件上载,带进度条,多文件上载。。    color: #3D2C05;
ASP无组件上载,带进度条,多文件上载。。    border: 1px solid #
715208;
ASP无组件上载,带进度条,多文件上载。。    
/* Mozilla proprietary */
ASP无组件上载,带进度条,多文件上载。。    
-moz-border-radius: 5px;
ASP无组件上载,带进度条,多文件上载。。    
/*-moz-opacity: 0.95*/
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。.progress table,.progress td{
ASP无组件上载,带进度条,多文件上载。。  font
-size:9pt;
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。.Bar{
ASP无组件上载,带进度条,多文件上载。。  width:
100%;
ASP无组件上载,带进度条,多文件上载。。    height:15px;
ASP无组件上载,带进度条,多文件上载。。    background
-color:#CCCCCC;
ASP无组件上载,带进度条,多文件上载。。    border: 1px inset #
666666;
ASP无组件上载,带进度条,多文件上载。。    margin
-bottom:4px;
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。.ProgressPercent{
ASP无组件上载,带进度条,多文件上载。。    font
-size: 9pt;
ASP无组件上载,带进度条,多文件上载。。    color: #
000000;
ASP无组件上载,带进度条,多文件上载。。    height: 15px;
ASP无组件上载,带进度条,多文件上载。。    position: absolute;
ASP无组件上载,带进度条,多文件上载。。    z
-index: 20;
ASP无组件上载,带进度条,多文件上载。。    width: 
100%;
ASP无组件上载,带进度条,多文件上载。。    text
-align: center;
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。.ProgressBar{
ASP无组件上载,带进度条,多文件上载。。  background
-color:#91D65C;
ASP无组件上载,带进度条,多文件上载。。    width:1px;
ASP无组件上载,带进度条,多文件上载。。    height:15px;
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
</style>
ASP无组件上载,带进度条,多文件上载。。
<div id="Progress" style="display:none;" class="progress">
ASP无组件上载,带进度条,多文件上载。。    
<div class="bar">
ASP无组件上载,带进度条,多文件上载。。        
<div id="ProgressPercent" class="ProgressPercent">0%</div>
ASP无组件上载,带进度条,多文件上载。。        
<div id="ProgressBar" class="ProgressBar"></div>
ASP无组件上载,带进度条,多文件上载。。    
</div>
ASP无组件上载,带进度条,多文件上载。。    
<table border="0" cellspacing="0" cellpadding="2">
ASP无组件上载,带进度条,多文件上载。。        
<tr>
ASP无组件上载,带进度条,多文件上载。。            
<td>已经上传</td>
ASP无组件上载,带进度条,多文件上载。。            
<td>:</td>
ASP无组件上载,带进度条,多文件上载。。            
<td id="uploadSize"></td>
ASP无组件上载,带进度条,多文件上载。。        
</tr>
ASP无组件上载,带进度条,多文件上载。。        
<tr>
ASP无组件上载,带进度条,多文件上载。。            
<td>上传速度</td>
ASP无组件上载,带进度条,多文件上载。。            
<td>:</td>
ASP无组件上载,带进度条,多文件上载。。            
<td id="uploadSpeed">&nbsp;</td>
ASP无组件上载,带进度条,多文件上载。。        
</tr>
ASP无组件上载,带进度条,多文件上载。。        
<tr>
ASP无组件上载,带进度条,多文件上载。。            
<td>共需时间</td>
ASP无组件上载,带进度条,多文件上载。。            
<td>:</td>
ASP无组件上载,带进度条,多文件上载。。            
<td id="totalTime">&nbsp;</td>
ASP无组件上载,带进度条,多文件上载。。        
</tr>
ASP无组件上载,带进度条,多文件上载。。        
<tr>
ASP无组件上载,带进度条,多文件上载。。            
<td>剩余时间</td>
ASP无组件上载,带进度条,多文件上载。。            
<td>:</td>
ASP无组件上载,带进度条,多文件上载。。            
<td id="leftTime">&nbsp;</td>
ASP无组件上载,带进度条,多文件上载。。        
</tr>
ASP无组件上载,带进度条,多文件上载。。    
</table>
ASP无组件上载,带进度条,多文件上载。。
</div>
ASP无组件上载,带进度条,多文件上载。。


Example.asp代码如下:

 

ASP无组件上载,带进度条,多文件上载。。<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
ASP无组件上载,带进度条,多文件上载。。
<!--#include file="SundyUpload.asp"-->
ASP无组件上载,带进度条,多文件上载。。
<%
ASP无组件上载,带进度条,多文件上载。。
'此例子文档编码都是UTF-8,如果是其他编码的系统,请将编码转换为相应的编码,不然表单获取数据可能会乱码
ASP无组件上载,带进度条,多文件上载。。
Dim objUpload,opt
ASP无组件上载,带进度条,多文件上载。。
Dim xmlPath
ASP无组件上载,带进度条,多文件上载。。
Dim fileFormName,objFile,counter
ASP无组件上载,带进度条,多文件上载。。opt 
= request.QueryString("opt")
ASP无组件上载,带进度条,多文件上载。。
If opt = "Upload" Then
ASP无组件上载,带进度条,多文件上载。。  xmlPath 
= Server.MapPath(request.QueryString("xmlPath"))'将虚拟路径转换为实际路径
ASP无组件上载,带进度条,多文件上载。。
    Set objUpload=new SundyUpload '建立上传对象
ASP无组件上载,带进度条,多文件上载。。
    objUpload.UploadInit xmlPath,"utf-8"
ASP无组件上载,带进度条,多文件上载。。    counter 
= 1
ASP无组件上载,带进度条,多文件上载。。    Response.Write(
"普通表单:" & objUpload.Form("normalForm"& "<BR><BR>")'获取表单数据
ASP无组件上载,带进度条,多文件上载。。
    For Each fileFormName In objUpload.objFile
ASP无组件上载,带进度条,多文件上载。。      
Set objFile=objUpload.objFile(fileFormName)
ASP无组件上载,带进度条,多文件上载。。        fileSize 
= objFile.FileSize
ASP无组件上载,带进度条,多文件上载。。        fileName 
= objFile.FileName
ASP无组件上载,带进度条,多文件上载。。        
If fileSize > 0 Then
ASP无组件上载,带进度条,多文件上载。。            Response.Write(
"File Size:" & fileSize & "<BR>")
ASP无组件上载,带进度条,多文件上载。。            Response.Write(
"File Name:" & objFile.FilePath & fileName & "<BR>")
ASP无组件上载,带进度条,多文件上载。。            Response.Write(
"File Description:" & objUpload.Form("fileDesc" & counter) & "<BR><BR>")
ASP无组件上载,带进度条,多文件上载。。            
'objFile.SaveAs 文件的实际路径(可以自行处理)
ASP无组件上载,带进度条,多文件上载。。
        End If
ASP无组件上载,带进度条,多文件上载。。        counter 
= counter + 1
ASP无组件上载,带进度条,多文件上载。。    
Next
ASP无组件上载,带进度条,多文件上载。。    
ASP无组件上载,带进度条,多文件上载。。
End If
ASP无组件上载,带进度条,多文件上载。。
'为上载进度条数据文件(XML文件指定虚拟路径)
ASP无组件上载,带进度条,多文件上载。。'
最好是随机的,因为可能多个人同时上载,需要不同的进度数据
ASP无组件上载,带进度条,多文件上载。。'
这个路径需要在提交的时候传入上载组件中,以便在上载过程中更改进度数据
ASP无组件上载,带进度条,多文件上载。。'
客户端使用Javascript来读取此XML文件,显示进度
ASP无组件上载,带进度条,多文件上载。。
xmlPath = "upload/" & Timer & ".xml"
ASP无组件上载,带进度条,多文件上载。。%
>
ASP无组件上载,带进度条,多文件上载。。
<html>
ASP无组件上载,带进度条,多文件上载。。
<head>
ASP无组件上载,带进度条,多文件上载。。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ASP无组件上载,带进度条,多文件上载。。
<title>Sundy Upload Progress Bar Example</title>
ASP无组件上载,带进度条,多文件上载。。
<script language="javascript">
ASP无组件上载,带进度条,多文件上载。。
function chkFrm(){
ASP无组件上载,带进度条,多文件上载。。  var objFrm 
= document.frmUpload;
ASP无组件上载,带进度条,多文件上载。。    
if (objFrm.file1.value=="" && objFrm.file2.value==""){
ASP无组件上载,带进度条,多文件上载。。      alert(
"请选择一个文件");
ASP无组件上载,带进度条,多文件上载。。        objFrm.file1.focus();
ASP无组件上载,带进度条,多文件上载。。        return 
false;
ASP无组件上载,带进度条,多文件上载。。    }
ASP无组件上载,带进度条,多文件上载。。    objFrm.action 
= "Example.asp?opt=Upload&xmlPath=<%=xmlPath%>";
ASP无组件上载,带进度条,多文件上载。。    startProgress(
'<%=xmlPath%>');//启动进度条
ASP无组件上载,带进度条,多文件上载。。
    return true;
ASP无组件上载,带进度条,多文件上载。。}
ASP无组件上载,带进度条,多文件上载。。
</script>
ASP无组件上载,带进度条,多文件上载。。
</head>
ASP无组件上载,带进度条,多文件上载。。
ASP无组件上载,带进度条,多文件上载。。
<body>
ASP无组件上载,带进度条,多文件上载。。
<form name="frmUpload" method="post" action="Example.asp" enctype="multipart/form-data" onSubmit="return chkFrm()">
ASP无组件上载,带进度条,多文件上载。。普通表单:
<BR><input type="text" name="normalForm" size="40"><BR><BR>
ASP无组件上载,带进度条,多文件上载。。文件1:
<BR>
ASP无组件上载,带进度条,多文件上载。。
<input type="file" name="file1" size="40"></br>
ASP无组件上载,带进度条,多文件上载。。
<input type="text" name="fileDesc1" size="30"><BR><BR>
ASP无组件上载,带进度条,多文件上载。。文件2:
<BR>
ASP无组件上载,带进度条,多文件上载。。
<input type="file" name="file2" size="40"></br>
ASP无组件上载,带进度条,多文件上载。。
<input type="text" name="fileDesc2" size="30"><BR>
ASP无组件上载,带进度条,多文件上载。。
<input type="submit" name="btnSubmit" value="submit"/>
ASP无组件上载,带进度条,多文件上载。。
</form>
ASP无组件上载,带进度条,多文件上载。。
</body>
ASP无组件上载,带进度条,多文件上载。。
</html>
ASP无组件上载,带进度条,多文件上载。。

将以上代码存为相应的文件,记得这个例子的页面编码一定要是UTF-8的,以后需要自己可以改

相关文章:

  • 2022-12-23
  • 2021-12-25
  • 2021-08-05
  • 2021-12-04
  • 2021-08-31
  • 2022-12-23
  • 2022-03-08
猜你喜欢
  • 2021-06-21
  • 2022-12-23
  • 2021-06-02
  • 2021-07-19
  • 2021-10-08
  • 2022-02-27
  • 2022-12-23
相关资源
相似解决方案