亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

解析ASP無組件上載,帶進度條,多文件上載_ASP教程

2024-05-04 11:04:12
字體:
來源:轉載
供稿:網友

推薦:

以下為引用的內容:

Example.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="SundyUpload.asp"-->
<%
'此例子文檔編碼都是UTF-8,如果是其他編碼的系統,請將編碼轉換為相應的編碼,不然表單獲取數據可能會亂碼
Dim objUpload,opt
Dim xmlPath
Dim fileFormName,objFile,counter
opt = request.QueryString("opt")
If opt = "Upload" Then
xmlPath = Server.MapPath(request.QueryString("xmlPath"))'將虛擬路徑轉換為實際路徑
Set objUpload=new SundyUpload '建立上傳對象
objUpload.UploadInit xmlPath,"utf-8"
counter = 1
Response.Write("普通表單:" & objUpload.Form("normalForm") & "<BR><BR>")'獲取表單數據
For Each fileFormName In objUpload.objFile
Set objFile=objUpload.objFile(fileFormName)
fileSize = objFile.FileSize
strTemp= objFile.FilePath
Response.Write strTemp
fileName = mid(strTemp,InStrRev(strTemp, "/") 1)
If fileSize > 0 Then
Response.Write("File Size:" & fileSize & "<BR>")
Response.Write("File Name:" & objFile.FilePath & "<BR>")
' Response.Write("File Description:" & objUpload.Form("fileDesc" & counter) & "<BR><BR>")
objFile.SaveAs Server.MapPath(".") & "/upload/" & fileName
Response.Write "Save at: "&Server.MapPath(".") & "/upload/" & fileName & "<br><br>"
End If
counter = counter 1
Next

End If
'為上載進度條數據文件(XML文件指定虛擬路徑)
'最好是隨機的,因為可能多個人同時上載,需要不同的進度數據
'這個路徑需要在提交的時候傳入上載組件中,以便在上載過程中更改進度數據
'客戶端使用Javascript來讀取此XML文件,顯示進度
xmlPath = "upload/" & Timer & ".xml"
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sundy Upload Progress Bar Example</title>
<script language="javascript">
function chkFrm(){
var objFrm = document.frmUpload;
if (objFrm.file1.value=="" && objFrm.file2.value==""){
alert("請選擇一個文件");
objFrm.file1.focus();
return false;
}
objFrm.action = "Example.asp?opt=Upload&xmlPath=<%=xmlPath%>";
startProgress('<%=xmlPath%>');//啟動進度條
return true;
}
</script>
</head>

<body>
<form name="frmUpload" method="post" action="Example.asp" enctype="multipart/form-data" onSubmit="return chkFrm()">
普通表單:<BR><input type="text" name="normalForm" size="40"><BR><BR>
文件1:<BR>
<input type="file" name="file1" size="40"></br>
<input type="text" name="fileDesc1" size="30"><BR><BR>
文件2:<BR>
<input type="file" name="file2" size="40"></br>
<input type="text" name="fileDesc2" size="30"><BR>
文件3:<BR>
<input type="file" name="file3" size="40"></br>
文件4:<BR>
<input type="file" name="file4" size="40"></br>
文件5:<BR>
<input type="file" name="file5" size="40"></br>
<input type="submit" name="btnSubmit" value="submit"/>
</form>
</body>
</html>

SundyUpload.asp

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<%
Dim SundyUpload_SourceData
Class SundyUpload
Dim objForm,objFile,Version,objProgress
Dim xmlPath,CharsetEncoding
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

Public Sub UploadInit(progressXmlPath,charset)
Dim RequestData,sStart,Crlf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,theFile
Dim iFileSize,sFilePath,sFileType,sFormValue,sFileName
Dim iFindStart,iFindEnd
Dim iFormStart,iFormEnd,sFormName

Version="Upload Width Progress Bar Version 1.0"
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 SundyUpload_SourceData = Server.CreateObject("adodb.stream")
SundyUpload_SourceData.Type = 1
SundyUpload_SourceData.Mode =3
SundyUpload_SourceData.Open

Dim TotalBytes
Dim ChunkReadSize
Dim DataPart, PartSize
Dim objProgress

TotalBytes = Request.TotalBytes ' 總大小
ChunkReadSize = 64 * 1024 ' 分塊大小64K
BytesRead = 0
xmlPath = progressXmlPath
CharsetEncoding = charset
If CharsetEncoding = "" Then
CharsetEncoding = "utf-8"
End If
Set objProgress = New Progress
objProgress.ProgressInit(xmlPath)
objProgress.UpdateProgress Totalbytes,0
'循環分塊讀取
Do While BytesRead < TotalBytes
'分塊讀取
PartSize = ChunkReadSize
If PartSize BytesRead > TotalBytes Then PartSize = TotalBytes - BytesRead
DataPart = Request.BinaryRead(PartSize)
BytesRead = BytesRead PartSize

SundyUpload_SourceData.Write DataPart

objProgress.UpdateProgress Totalbytes,BytesRead
Loop
'SundyUpload_SourceData.Write Request.BinaryRead(Request.TotalBytes)
SundyUpload_SourceData.Position=0
RequestData =SundyUpload_SourceData.Read

iFormStart = 1
iFormEnd = LenB(RequestData)
Crlf = chrB(13) & chrB(10)
sStart = MidB(RequestData,1, InStrB(iFormStart,RequestData,Crlf)-1)
iStart = LenB (sStart)
iFormStart=iFormStart iStart 1
While (iFormStart 10) < iFormEnd
iInfoEnd = InStrB(iFormStart,RequestData,Crlf & Crlf) 3
tStream.Type = 1
tStream.Mode =3
tStream.Open
SundyUpload_SourceData.Position = iFormStart
SundyUpload_SourceData.CopyTo tStream,iInfoEnd-iFormStart
tStream.Position = 0
tStream.Type = 2
tStream.Charset =CharsetEncoding
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
SundyUpload_SourceData.Position = iInfoEnd
SundyUpload_SourceData.CopyTo tStream,iFormStart-iInfoEnd-3
tStream.Position = 0
tStream.Type = 2
tStream.Charset = CharsetEncoding
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_Initialize

End Sub

Private Sub Class_Terminate
If Request.TotalBytes>0 Then
objForm.RemoveAll
objFile.RemoveAll
Set objForm=Nothing
Set objFile=Nothing
SundyUpload_SourceData.Close
Set SundyUpload_SourceData = Nothing
End If
Set objProgress = Nothing
Set objFso = Server.CreateObject("Scripting.FileSystemObject")
If objFso.FileExists(xmlPath) Then
objFso.DeleteFile(xmlPath)
End If
Set objFso = Nothing
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
'Response.Write fullpath & ".....................<br>"
'FileName="ss.txt"
If trim(fullpath)="" or FileStart=0 or fileName="" or right(fullpath,1)="/" Then Exit Function
'Response.Write "2........................<br>"
Set dr=CreateObject("Adodb.Stream")
dr.Mode=3
dr.Type=1
dr.Open
SundyUpload_SourceData.position=FileStart
SundyUpload_SourceData.copyto dr,FileSize
dr.SaveToFile FullPath,2
dr.Close
Set dr=Nothing
SaveAs=False
End Function
End Class

Class Progress
Dim objDom,xmlPath
Dim startTime
Private Sub Class_Initialize

End Sub

Public Sub ProgressInit(xmlPathTmp)
Dim objRoot,objChild
Dim objPI

xmlPath = xmlPathTmp
Set objDom = Server.CreateObject("Microsoft.XMLDOM")
Set objRoot = objDom.createElement("progress")
objDom.appendChild objRoot

Set objChild = objDom.createElement("totalbytes")
objChild.Text = "0"
objRoot.appendChild objChild
Set objChild = objDom.createElement("uploadbytes")
objChild.Text = "0"
objRoot.appendChild objChild
Set objChild = objDom.createElement("uploadpercent")
objChild.Text = "0%"
objRoot.appendChild objChild
Set objChild = objDom.createElement("uploadspeed")
objChild.Text = "0"
objRoot.appendChild objChild
Set objChild = objDom.createElement("totaltime")
objChild.Text = "00:00:00"
objRoot.appendChild objChild
Set objChild = objDom.createElement("lefttime")
objChild.Text = "00:00:00"
objRoot.appendChild objChild

Set objPI = objDom.createProcessingInstruction("xml","version='1.0' encoding='utf-8'")
objDom.insertBefore objPI, objDom.childNodes(0)
objDom.Save xmlPath
Set objPI = Nothing
Set objChild = Nothing
Set objRoot = Nothing
Set objDom = Nothing
End Sub

Sub UpdateProgress(tBytes,rBytes)
Dim eTime,currentTime,speed,totalTime,leftTime,percent
If rBytes = 0 Then
startTime = Timer
Set objDom = Server.CreateObject("Microsoft.XMLDOM")
objDom.load(xmlPath)
objDom.selectsinglenode("//totalbytes").text=tBytes
objDom.save(xmlPath)
Else
speed = 0.0001
currentTime = Timer
eTime = currentTime - startTime
If eTime>0 Then speed = rBytes / eTime
totalTime = tBytes / speed
leftTime = (tBytes - rBytes) / speed
percent = Round(rBytes *100 / tBytes)
'objDom.selectsinglenode("//uploadbytes").text = rBytes
'objDom.selectsinglenode("//uploadspeed").text = speed
'objDom.selectsinglenode("//totaltime").text = totalTime
'objDom.selectsinglenode("//lefttime").text = leftTime
objDom.selectsinglenode("//uploadbytes").text = FormatFileSize(rBytes) & " / " & FormatFileSize(tBytes)
objDom.selectsinglenode("//uploadpercent").text = percent
objDom.selectsinglenode("//uploadspeed").text = FormatFileSize(speed) & "/sec"
objDom.selectsinglenode("//totaltime").text = SecToTime(totalTime)
objDom.selectsinglenode("//lefttime").text = SecToTime(leftTime)
objDom.save(xmlPath)
End If
End Sub

private Function SecToTime(sec)
Dim h:h = "0"
Dim m:m = "0"
Dim s:s = "0"
h = round(sec / 3600)
m = round( (sec mod 3600) / 60)
s = round(sec mod 60)
If LEN(h)=1 Then h = "0" & h
If LEN(m)=1 Then m = "0" & m
If LEN(s)=1 Then s = "0" & s
SecToTime = (h & ":" & m & ":" & s)
End Function

private Function FormatFileSize(fsize)
Dim radio,k,m,g,unitTMP
k = 1024
m = 1024*1024
g = 1024*1024*1024
radio = 1
If Fix(fsize / g) > 0.0 Then
unitTMP = "GB"
radio = g
ElseIf Fix(fsize / m) > 0 Then
unitTMP = "MB"
radio = m
ElseIf Fix(fsize / k) > 0 Then
unitTMP = "KB"
radio = k
Else
unitTMP = "B"
radio = 1
End If
If radio = 1 Then
FormatFileSize = fsize & "&nbsp;" & unitTMP
Else
FormatFileSize = FormatNumber(fsize/radio,3) & unitTMP
End If
End Function

Private Sub Class_Terminate
Set objDom = Nothing
End Sub
End Class
'http://www.CuoXIn.com/
%>
<script language="javascript">
//啟動進度條
function startProgress(xmlPath){
displayProgress();
setProgressDivPos();
setTimeout("DisplayProgressBar('" xmlPath "')",500);
}

function DisplayProgressBar(xmlPath){
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc.async = false;
xmlDoc.load(xmlPath);
if (xmlDoc.parseError.errorCode!=0){
var error = xmlDoc.parseError;
alert(error.reason)
setTimeout("DisplayProgressBar('" xmlPath "')",1000);
return;
}
var root = xmlDoc.documentElement; //根節點
var totalbytes = root.childNodes(0).text;
var uploadbytes = root.childNodes(1).text;
var percent = root.childNodes(2).text;
ProgressPercent.innerHTML = percent "%";
ProgressBar.style.width = percent "%";
uploadSize.innerHTML = uploadbytes;
uploadSpeed.innerHTML = root.childNodes(3).text;
totalTime.innerHTML = root.childNodes(4).text;
leftTime.innerHTML = root.childNodes(5).text;
if (percent<100){
setTimeout("DisplayProgressBar('" xmlPath "')",1000);
}
}

function displayProgress(){
var objProgress = document.getElementById("Progress");
objProgress.style.display = "";
}
function closeProgress(){
var objProgress = document.getElementById("Progress");
objProgress.style.display = "none";
}
function setProgressDivPos(){
var objProgress = document.getElementById("Progress");
objProgress.style.top = document.body.scrollTop (document.body.clientHeight-document.getElementById("Progress").offsetHeight)/2
objProgress.style.left = document.body.scrollLeft (document.body.clientWidth-document.getElementById("Progress").offsetWidth)/2;
}
</script>
<style type="text/css">
.progress {
position: absolute;
padding: 4px;
top: 50;
left: 400;
font-family: Verdana, Helvetica, Arial, sans-serif;
font-size: 12px;
width: 250px;
height:100px;
background: #FFFBD1;
color: #3D2C05;
border: 1px solid #715208;
/* Mozilla proprietary */
-moz-border-radius: 5px;
/*-moz-opacity: 0.95; */
}
.progress table,.progress td{
font-size:9pt;
}

.Bar{
width:100%;
height:15px;
background-color:#CCCCCC;
border: 1px inset #666666;
margin-bottom:4px;
}

.ProgressPercent{
font-size: 9pt;
color: #000000;
height: 15px;
position: absolute;
z-index: 20;
width: 100%;
text-align: center;
}
.ProgressBar{
background-color:#91D65C;
width:1px;
height:15px;
}
</style>
<div id="Progress" style="display:none;" class="progress">
<div class="bar">
<div id="ProgressPercent" class="ProgressPercent">0%</div>
<div id="ProgressBar" class="ProgressBar"></div>
</div>
<table border="0" cellspacing="0" cellpadding="2">
<tr>
<td>已經上傳</td>
<td>:</td>
<td id="uploadSize"></td>
</tr>
<tr>
<td>上傳速度</td>
<td>:</td>
<td id="uploadSpeed">&nbsp;</td>
</tr>
<tr>
<td>共需時間</td>
<td>:</td>
<td id="totalTime">&nbsp;</td>
</tr>
<tr>
<td>剩余時間</td>
<td>:</td>
<td id="leftTime">&nbsp;</td>
</tr>
</table>
</div>

分享:淺析ASP-server.URLEncode反函數:urldecode
如果有空格就用 代替,如果有其它字符就用%ASCII代替,如果有漢字等四個字節的字符,就用兩個%ASCII來代替。不過有時候我們也需要將經過這種編碼的字符串進行解碼,但asp并沒有提供相關的

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品之草原avav久久| 欧美视频在线免费看| 国产精品久久久久秋霞鲁丝| 日韩欧美在线中文字幕| 91在线免费网站| 亚洲久久久久久久久久久| 九九精品在线观看| 国产精品日韩精品| 日本精品免费观看| 亚洲天堂2020| 91高清视频免费| 欧美激情免费视频| 91香蕉国产在线观看| 日韩在线视频免费观看高清中文| www.日韩免费| 欧美黑人极品猛少妇色xxxxx| 法国裸体一区二区| 神马久久桃色视频| 国产视频欧美视频| 中文字幕最新精品| 在线播放日韩欧美| 麻豆国产精品va在线观看不卡| 曰本色欧美视频在线| 亚洲成人激情图| 成人在线视频福利| 曰本色欧美视频在线| 庆余年2免费日韩剧观看大牛| 国产成人精品电影| 777国产偷窥盗摄精品视频| 日韩在线精品一区| 久久免费少妇高潮久久精品99| 久久久女人电视剧免费播放下载| 欧美国产日韩二区| 国产v综合v亚洲欧美久久| 亚洲a级在线播放观看| 欧美乱大交做爰xxxⅹ性3| 久久精品国产亚洲一区二区| 高清欧美性猛交xxxx黑人猛交| 国产在线一区二区三区| 俺也去精品视频在线观看| 91日本在线观看| 久久久久久久久久久免费精品| 丁香五六月婷婷久久激情| 国产suv精品一区二区三区88区| 色噜噜久久综合伊人一本| 久久97精品久久久久久久不卡| 久久成人av网站| 久久这里有精品视频| 成人午夜激情网| 亚洲国产女人aaa毛片在线| 午夜精品三级视频福利| 日韩福利伦理影院免费| 亚洲色图激情小说| 欧美一级片久久久久久久| 91热福利电影| 91精品国产免费久久久久久| 成人福利视频在线观看| 26uuu久久噜噜噜噜| 综合网日日天干夜夜久久| 欧美精品videosex极品1| 久久精品视频免费播放| 岛国精品视频在线播放| 亚洲欧美日韩在线高清直播| 日韩中文字幕欧美| 亚洲国产成人一区| 国产一区二区香蕉| 久久国产精品久久久久久| 青青久久av北条麻妃黑人| 欧美日韩国产丝袜另类| 亚洲第一色在线| 欧美性猛交xxxx偷拍洗澡| 国产精品美腿一区在线看| 亚洲电影中文字幕| 欧美精品在线第一页| 亚洲午夜激情免费视频| 日韩欧美成人网| 欧美噜噜久久久xxx| 亚洲色图25p| 欧美日韩一二三四五区| 国产精品影院在线观看| 中文字幕亚洲欧美日韩2019| 久久久www成人免费精品张筱雨| 精品久久久久久久大神国产| 久久精品成人一区二区三区| 日韩av在线精品| 91精品久久久久久久久中文字幕| 国产在线观看精品一区二区三区| 国产午夜精品视频| 欧美激情第一页xxx| 国产精品福利网| 日韩激情在线视频| 国产精品影片在线观看| 国产精品a久久久久久| 国产成人精品优优av| 欧美成人一区在线| 97欧美精品一区二区三区| 91久久精品视频| 美女精品视频一区| 在线观看久久久久久| 日韩69视频在线观看| 欧美精品在线免费观看| 免费不卡欧美自拍视频| 欧美一区二区.| 中文字幕亚洲综合久久筱田步美| 国产精品久久久久久久久久久新郎| 岛国av在线不卡| 国产精品久久久久久久久久小说| 亚洲91精品在线| 九色精品美女在线| 欧美日韩成人免费| 欧美丰满少妇xxxxx做受| 久久伊人精品天天| 色樱桃影院亚洲精品影院| 一区二区在线免费视频| 国产中文欧美精品| 国产中文字幕亚洲| 国产成人鲁鲁免费视频a| 成人精品久久久| 精品丝袜一区二区三区| 国产日韩专区在线| 亚洲女同精品视频| 国产日产欧美精品| 欧美精品www在线观看| 欧美大片欧美激情性色a∨久久| 成人h视频在线| 亚洲2020天天堂在线观看| 欧美日韩成人在线播放| 成人有码在线播放| 精品国产老师黑色丝袜高跟鞋| 亚洲色图国产精品| 欧美大片在线看免费观看| 色综合伊人色综合网站| 国产日韩欧美成人| 国内精品久久久久久久久| 国色天香2019中文字幕在线观看| 亚洲精品美女久久久久| 亚洲第一中文字幕在线观看| 亚洲天堂免费观看| 国产精品一区二区久久久久| 国产日韩av在线| 色视频www在线播放国产成人| 国产精品久久久久久久久粉嫩av| 久久精品这里热有精品| 国产日韩精品一区二区| 91禁国产网站| 亚洲图片制服诱惑| 亚洲人午夜精品| 2019中文在线观看| 色樱桃影院亚洲精品影院| 91久久精品久久国产性色也91| 日韩精品在线观看视频| 亚洲精品mp4| 亚洲国产古装精品网站| 欧美日韩国产精品一区| 亚洲男人天堂网站| 2021国产精品视频| 欧美亚洲国产成人精品| 亚洲国产又黄又爽女人高潮的| 欧美国产在线电影| 久久久精品久久久| 日韩欧美成人精品| 久久久精品中文字幕| 日韩av网站电影| 久久99国产综合精品女同|