Recommended: How to get ASP to get the first image address in the code The following is the referenced content: 'Modify the pattern again' the code to be detected' http://www.knowsky.com/asp.asp'leixing html or ubb'nopic code does not have
| The following is the quoted content: Example.asp <%@LANGUAGE=VBSCRIPT CODEPAGE=65001%> <!--#include file=SundyUpload.asp--> <% 'The document encoding in this example is UTF-8. If it is a system with other encoding, please convert the encoding to the corresponding encoding, otherwise the data obtained in the form may be garbled. Dim objUpload,opt Dim xmlPath Dim fileFormName,objFile,counter opt = request.QueryString(opt) If opt = Upload Then xmlPath = Server.MapPath(request.QueryString(xmlPath))'Convert virtual path to actual path Set objUpload=new SundyUpload 'Create upload object objUpload.UploadInit xmlPath,utf-8 counter = 1 Response.Write(normal form: & objUpload.Form(normalForm) & <BR><BR>)'Get form data 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 'Specify a virtual path for uploading progress bar data file (XML file) 'It's better to be random, because multiple people may upload at the same time, requiring different progress data 'This path needs to be passed into the upload component during submission to change the progress data during the upload process 'The client uses Javascript to read this XML file and displays progress 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 (please select a file); objFrm.file1.focus(); return false; } objFrm.action = Example.asp?opt=Upload&xmlPath=<%=xmlPath%>; startProgress('<%=xmlPath%>');//Start progress bar return true; } </script> </head> <body> <form name=frmUpload method=post action=Example.asp enctype=multipart/form-data onSubmit=return chkFrm()> Normal form: <BR><input type=text name=normalForm size=40><BR><BR> File 1:<BR> <input type=file name=file1 size=40></br> <input type=text name=fileDesc1 size=30><BR><BR> File 2:<BR> <input type=file name=file2 size=40></br> <input type=text name=fileDesc2 size=30><BR> File 3:<BR> <input type=file name=file3 size=40></br> File 4:<BR> <input type=file name=file4 size=40></br> File 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 ' Total size ChunkReadSize = 64 * 1024 ' Block size 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 'Loop chunked reading Do While BytesRead < TotalBytes 'Blocked read 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 'Get the form project name 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 it's a file If InStr (45,sInfo,filename=,1) > 0 Then Set theFile=new FileInfo 'Get the file name 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) 'Get file type 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 'If it's a form project 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 & & 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> //Start progress bar 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; //root node 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 cellpacing=0 cellpadding=2> <tr> <td>Accorded</td> <td>:</td> <td id=uploadSize></td> </tr> <tr> <td>Upload speed</td> <td>:</td> <td id=uploadSpeed> </td> </tr> <tr> <td>Total time</td> <td>:</td> <td id=totalTime> </td> </tr> <tr> <td>Remaining time</td> <td>:</td> <td id=leftTime> </td> </tr> </table> </div> |
Share: A brief analysis of ASP-server.URLEncode inverse function: urldecode If there are spaces, use instead. If there are other characters, use %ASCII instead. If there are four byte characters such as Chinese characters, use two %ASCII instead. However, sometimes we also need to decode the string that has been encoded, but asp does not provide relevant