Empfohlen: So erhalten Sie ASP, um die erste Bildadresse in den Code zu erhalten Im Folgenden ist der in Bezug
| Das Folgende ist der zitierte Inhalt: Beispiel.asp <%@Sprache = vbScript Codepage = 65001%> <!-#include File = sondyUpload.asp-> <% 'Die Dokumentcodierung in diesem Beispiel ist UTF-8. Wenn es sich um ein System mit einer anderen Codierung handelt, konvertieren Sie bitte die Codierung in die entsprechende Codierung, andernfalls können die in der Form erhaltenen Daten verstümmelt werden. DIM -Einladung, opt Dimer XMLPath Dim FileFormName, ObjFile, Zähler opt = request.queryString (opt) Wenn opt = hochladen, dann xmlpath = server.mappath (request.queryString (xmlPath)) 'Virtueller Pfad auf den tatsächlichen Pfad konvertieren Setzen Sie objUpload = new SundyUpload 'Upload -Objekt erstellen objUpload.Uploadinit xmlPath, UTF-8 Zähler = 1 Response.write (Normale Form: & objupload.form (Normalform) & <br> <br>) 'Formular Daten abrufen Für jeden Dateiformnamen in objUpload.objFile Setzen Sie objFile = objUpload.objFile (FileformName) FileSize = ObjFile.FileSize strtemp = objFile.filepath Antwort.Write Strtemp Dateiname = Mid (Strtemp, Instrrev (Strtemp, /) 1) Wenn Dateigröße> 0 dann Response.write (Dateigröße: & FileSize & <br>) Antwort.Write (Dateiname: & Objfile.filepath & <br>) 'Response.write (Dateibeschreibung: & objUpload.form (Fileedesc & Counter) & <br> <br>) OBJFILE.SAVEAS Server.Mappath (.) & / Upload / & Dateiname Response.write speichern unter: & server.mappath (.) & / Upload / & Dateiname & <br> <br> Ende wenn Zähler = Zähler 1 Nächste Ende wenn 'Geben Sie einen virtuellen Pfad zum Hochladen von Fortschrittsleistendatendatei (XML -Datei) an (XML -Datei). „Es ist besser, zufällig zu sein, da mehrere Personen gleichzeitig hochladen können und unterschiedliche Fortschrittsdaten erfordern 'Dieser Pfad muss während der Einreichung in die Upload -Komponente übergeben werden, um die Fortschrittsdaten während des Upload -Prozesses zu ändern 'Der Client verwendet JavaScript, um diese XML -Datei zu lesen, und zeigt den Fortschritt an XMLPath = Upload/ & Timer & .xml %> <html> <kopf> <meta http-äquiv = content-type content = text/html; charset = utf-8 /> <titels> Sundy Upload Progress Bar Beispiel </title> <script Language = JavaScript> Funktion chkfrm () { var objfrm = document.frMUpload; if (objfrm.File1.Value == && objfrm.file2.value ==) { Warnung (Bitte wählen Sie eine Datei aus); objfrm.file1.focus (); false zurückgeben; } objfrm.action = Beispiel.asp? opt = Upload & xmlPath = <%= xmlPath%>; startProgress ('<%= xmlPath%>'); // Start Fortschrittsbalken zurückkehren; } </script> </head> <body> <Formular name = frmUpload methode = post action = exitle Normale Form: <br> <Eingabetyp = Textname = Normalform Größe = 40> <br> <br> Datei 1: <br> <Eingabe type = Dateiname = Datei1 size = 40> </br> <Eingabe type = textname = ageledesc1 size = 30> <br> <br> Datei 2: <br> <Eingabe type = Dateiname = Datei2 size = 40> </br> <Eingabe type = Textname = arredesc2 size = 30> <br> Datei 3: <br> <Eingabe type = Dateiname = Datei3 size = 40> </br> Datei 4: <br> <Eingabe type = Dateiname = Datei4 size = 40> </br> Datei 5: <br> <Eingabe type = Dateiname = Datei5 size = 40> </br> <Eingabe type = senden name = btnsubmit value = suruging/> </form> </body> </html> Sondyupload.asp <meta http-äquiv = content-type content = text/html; charset = utf-8 /> <% Dim SundyUpload_Sourcedata Klasse SundyUpload Dim Objform, Objfile, Version, ObjProgress Dim XmlPath, CharSetencoding Öffentliche Funktionsform (STRform) STRform = Lase (STRform) Wenn nicht objform.exists (strform) dann Form = Anders Form = objform (STRform) Ende wenn Endfunktion Öffentliche Funktionsdatei (strFile) strFile = lase (strFile) Wenn nicht objFile.exists (strFile) dann Setzen Sie Datei = new FileInfo Anders Setzen Sie Datei = objFile (strFile) Ende wenn Endfunktion Öffentliches Sub -Uploadinit (ProgressXMLPath, Charset) Dim RequestData, Sstart, CRLF, Sinfo, Iinfostart, Iinfoend, TStream, Istart, TheFile Dimitesize, Sfilepath, Sfiletyp, SformValue, Sfilename Dim ifindStart, ifindend Dimer iFormStart, ARTORMEND, SFORMNAME Version = Hochladen Breite Fortschrittsleiste Version 1.0 Setzen Sie objForm = server.createObject (scripting.Dictionary) Setzen Sie objFile = server.createObject (scripting.Dictionary) Wenn request.totalbytes <1 dann beenden Setzen Sie tstream = server.createObject (adodb.stream) SET SUNDYUPOAD_SOURCEDATA = Server.CreateObject (adodb.stream) SondyUpload_sourcedata.type = 1 SondyUpload_sourcedata.mode = 3 Sondyupload_sourcedata.open Dim TotalBytes Dimer ChunkReadSize DIM -DataPart, agieren Dimer Objprogress TotalBytes = Request.TotalBytes 'Gesamtgröße ChunkReadSize = 64 * 1024 'Blockgröße 64k ByteSread = 0 xmlPath = progresorxmlPath CharSetEnCoding = charSet Wenn charsetencoding = dann Charsetencoding = utf-8 Ende wenn Setzen Sie objProgress = neue Fortschritte objProgress.Progressinit (XMLPath) ObjProgress.UpdateProgress TotalBytes, 0 'Loop -Lesen Tun, während ByteSread <TotalBytes 'Blocked Read Agieren = chunkReadSize Wenn Sie BytesRead> TotalBytes abgeben, agieren Sie = TotalBytes - ByteSread DataPart = Request.BinaryRead (agieren) ByteSread = bytesread partsize SondyUpload_sourcedata.write datapart ObjProgress.UpdateProgress TotalBytes, ByteSread Schleife 'SundyUpload_Sourcedata.Write Request.BINYREAD (request.totalbytes) SondyUpload_sourcedata.position = 0 RequestData = sondyUpload_sourcedata.read iformStart = 1 itormend = lenb (requestData) CRLF = CHRB (13) & CHRB (10) Sstart = Midb (RequestData, 1, Instrb (AformStart, RequestData, CRLF) -1) istart = lenb (sstart) itormStart = itormStart istart 1 While (itormStart 10) <fixeD iinfoend = instrb (itormStart, requestData, crlf & crlf) 3 tstream.type = 1 tstream.mode = 3 tstream.open SondyUpload_sourcedata.position = itormStart SondyUpload_sourcedata.copyto tstream, iinfoend-vergleichstart tstream.position = 0 tstream.type = 2 TStream.CharSet = CharSetEnCoding SINFO = TSTREAM.READTEXT tstream.close 'Holen Sie sich den Formularprojektnamen itormStart = instrb (iinfoend, requestData, sstart) IfindStart = Instrument (22, Sinfo, Name =, 1) 6 ifindend = instr (ifindStart, sinfo ,, 1) SFORMNAME = LASTE (MID (SINFO, IFINDSTART, IFINDEND-IFINDSTART)) 'Wenn es sich um eine Datei handelt Wenn Instrument (45, Sinfo, Dateiname =, 1)> 0 dann Setzen Sie die Datei = new FileInfo 'Holen Sie sich den Dateinamen 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) 'Dateityp abrufen 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 = itormStart -iinfoend -3 theFile.formName = sformName Wenn nicht objFile.exists (SformName) dann objFile.add SformName, thefile Ende wenn Anders 'Wenn es sich um ein Formprojekt handelt tstream.type = 1 tstream.mode = 3 tstream.open SondyUpload_sourcedata.position = iinfoend SondyUpload_sourcedata.copyto tstream, itormStart-iinfoend-3 tstream.position = 0 tstream.type = 2 TStream.CharSet = CharSetEnCoding SFORMVALUE = TSTREAM.READTEXT tstream.close Wenn objform.exists (SformName) dann ObjForm (SFORMNAME) = OBJFORM (SFORMNAME) &, & SFORMVALUE Anders objform.add SformName, SFORMVALUE Ende wenn Ende wenn itormStart = itormStart istart 1 Wend RequestData = Setzen Sie tstream = nichts Ende sub Private sub class_initialize Ende sub Private sub class_terate Wenn request.totalbytes> 0 dann objform.removeall objFile.removeall Setzen Sie objform = nichts Setzen Sie OBJFILE = nichts SondyUpload_sourcedata.close Setzen Sie SundyUpload_Sourcedata = nichts Ende wenn ObjProgress einstellen = nichts Setzen Sie OBJFSO = Server.createObject (scripting.filesystemObject) Wenn objfso.fileExists (xmlPath) dann OBJFSO.DELETEFILE (XMLPATH) Ende wenn Setzen Sie objfso = nichts Ende sub Private Funktion getFilepath (FullPath) Wenn FullPath <> dann GetFilepath = links (FullPath, Instrrev (Vollpath,)) Anders GetFilepath = Ende wenn Endfunktion Private Funktion getFileName (FullPath) Wenn FullPath <> dann GetFileName = Mid (FullPath, Instrrev (FullPath, /) 1) Anders GetFileName = Ende wenn Endfunktion Endklasse Klassendateiinfo Dim Formname, Dateiname, Filepath, FileSize, Filetype, FilESTART Private sub class_initialize Dateiname = Filepath = Filesize = 0 Filestart = 0 Formname = Filetyp = Ende sub Öffentliche Funktion Saveas (Fullwath) Dim DR, Fehlerchar, i Saveas = true 'Response.write FullPath & ............... <br> 'Dateiname = ss.txt Wenn Trim (FullPath) = oder FilESTART = 0 oder Dateiname = oder rechts (FullPath, 1) =/ dann beenden die Funktion 'Response.write 2 ............ <br> Setzen Sie DR = CreateObject (adodb.stream) Dr.Mode = 3 Dr.Type = 1 Dr.open SondyUpload_sourcedata.position = filestart SondyUpload_sourcedata.copyto DR, Filesize Dr.Savetofile Fullpath, 2 Dr.CLOSE Setzen Sie dr = nichts Saveas = falsch Endfunktion Endklasse Klassenfortschritt Dim Objdom, xmlPath Dim Starttime Private sub class_initialize Ende sub Öffentliche Sub ProgressInit (xmlpathtmp) Dim Objroot, Objchild Dimer Objpi xmlPath = xmlPathtmp Setzen Sie objdom = server.createObject (microsoft.xmldom) Setzen Sie Objroot = objdom.createelement (Fortschritt) Objdom.Appendchild Objroot Setzen Sie objchild = objdom.createelement (TotalBytes) objchild.text = 0 objroot.appendchild objchild Setzen Sie objchild = objdom.createelement (UploadBytes) objchild.text = 0 objroot.appendchild objchild Setzen Sie objchild = objdom.createelement (Uploadpercent) objchild.text = 0% objroot.appendchild objchild Setzen Sie objchild = objdom.createelement (Uploadspeed) objchild.text = 0 objroot.appendchild objchild Setzen Sie objchild = objdom.createelement (Gesamtzeit) objchild.text = 00:00:00 objroot.appendchild objchild Setzen Sie objchild = objdom.createelement (links) objchild.text = 00:00:00 objroot.appendchild objchild Setzen Sie objpi = objdom.createprocessingInstruction (xml, Version = '1.0' coding = 'utf-8') objdom.insertbevor objpi, objdom.childnodes (0) objdom.save xmlPath Setzen Sie objpi = nichts Objchild setzen = nichts Objroot setzen = nichts Objdom setzen = nichts Ende sub Sub UpdateProgress (TBYTES, RBYTES) Dim etime, Currentime, Geschwindigkeit, TotalTime, Links, Prozent Wenn rbytes = 0 dann StartTime = Timer Setzen Sie objdom = server.createObject (microsoft.xmldom) objdom.load (xmlPath) Objdom.Selectsinglenode (// TotalBytes) .Text = tByTes objdom.save (xmlPath) Anders Geschwindigkeit = 0,0001 Currentime = Timer Etime = Currentime - Starttime Wenn etime> 0 dann Speed = rByte / etime TotalTime = TByte/Geschwindigkeit LinksTime = (TBYTES - RBYTES) / Geschwindigkeit Prozent = rund (rbytes *100 / tbyte) 'Objdom.Selectsinglenode (// UploadBytes) .Text = rByTes 'Objdom.Selectsinglenode (// Uploadspeed) .Text = Geschwindigkeit 'Objdom.Selectsinglenode (// TotalTime) .Text = TotalTime 'objdom.Selectsinglenode (// links) .Text = links Objdom.Selectsinglenode (// UploadBytes) .Text = formatFileSize (rByTes) &/& formatFileSize (TByTes) Objdom.Selectsinglenode (// Hochloadpercent) .Text = Prozent Objdom.Selectsinglenode (// Uploadspeed) .Text = formatFileSize (Geschwindigkeit) &/Sek. Objdom.Selectsinglenode (// TotalTime) .Text = Sektotime (Gesamtzeit) Objdom.Selectsinglenode (// links) .Text = sectotime (links) objdom.save (xmlPath) Ende wenn Ende sub Private Funktionssektotime (Sec) Dim H: H = 0 Dim M: M = 0 Dim s: s = 0 H = Runde (Sec/3600) M = Runde ((Sec Mod 3600) / 60) S = Runde (Sec Mod 60) Wenn len (h) = 1 dann h = 0 & h Wenn Len (m) = 1 dann M = 0 & M. Wenn Len (s) = 1 dann s = 0 & s Sectotime = (H &: & m &: & s) Endfunktion private Funktion formatfileSize (fSIZE) Dim Radio, K, M, G, Unittmp K = 1024 M = 1024*1024 g = 1024*1024*1024 Radio = 1 Wenn fix (fsire / g)> 0.0 dann unittmp = gb Radio = g Elseif fix (fSize / m)> 0 dann unittmp = mb Radio = m Elseif fix (fsire /k)> 0 dann unittmp = kb Radio = k Anders unittmp = b Radio = 1 Ende wenn Wenn Radio = 1 dann FormatFileSize = fSize & & nbsp; & unittmp Anders FormatFileSize = formatnumber (fsire/radio, 3) & unittmp Ende wenn Endfunktion Private sub class_terate Objdom setzen = nichts Ende sub Endklasse 'http://www.cuoxin.com/ %> <script Language = JavaScript> // Fortschrittsbalken starten Funktion startProgress (xmlPath) { displayProgress (); setProgressDivpos (); setTimeout (displayProgressBar ('xmlPath'), 500); } Funktion 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; alarm (error.reason) setTimeout (displayProgressBar ('xmlPath'), 1000); zurückkehren; } var root = xmldoc.documentElement; // Root -Knoten var TotalBytes = root.childnodes (0) .Text; var uploadBytes = root.childnodes (1) .Text; var prozent = root.childnodes (2) .Text; Progresorpercent.innernhtml = Prozent %; ProgressBar.Style.width = Prozent %; UploadSize.innerhtml = UploadBytes; UploadSpeed.innerhtml = root.Childnodes (3) .Text; TotalTime.InnerHtml = root.childnodes (4) .Text; linksTime.innerhtml = root.childnodes (5) .Text; if (Prozent <100) { setTimeout (displayProgressBar ('xmlPath'), 1000); } } Funktion displayProgress () { var objProgress = document.getElementById (Fortschritt); ObjProgress.Style.Display =; } Funktion closeProgress () { var objProgress = document.getElementById (Fortschritt); ObjProgress.Style.Display = Keine; } Funktion SetProgressDivpos () { var objProgress = document.getElementById (Fortschritt); objProgress.style.top = document.body.scrolltop (document.body.clientHeight-document.getElementById (Fortschritt) .offseteight)/2 objProgress.style.left = document.body.scrollleft (document.body.clientwidth-document.getElementById (Fortschritt) .Offsetwidth)/2; } </script> <style type = text/css> .Fortschritt { Position: absolut; Polsterung: 4px; Top: 50; Links: 400; Schriftfamilie: Verdana, Helvetica, Arial, Sans-Serif; Schriftgröße: 12px; Breite: 250px; Höhe: 100px; Hintergrund: #fffbd1; Farbe: #3D2C05; Grenze: 1PX Solid #715208; / * Mozilla Proprietary *// -moz-border-radius: 5px; /*-Moz-Opacity: 0,95; */ } .PROGRESSE TABELLE, .PROGRESS TD { Schriftgröße: 9pt; } .Bar{ Breite: 100%; Höhe: 15px; Hintergrundfarbe: #ccccc; Grenze: 1PX Einschub #666666; Randboden: 4px; } .Progressive { Schriftgröße: 9pt; Farbe: #000000; Höhe: 15px; Position: absolut; Z-Index: 20; Breite: 100%; Text-Align: Mitte; } .Progressbar { Hintergrundfarbe:#91D65C; Breite: 1PX; Höhe: 15px; } </style> <div id = progress style = display: keine; class = progress> <div class = bar> <div id = progressiveSpercent class = progressiveSpercent> 0%</div> <div id = progresorBar class = progreshtBar> </div> </div> <Table Border = 0 Cellpacing = 0 Cellpadding = 2> <tr> <td> verantwortlich </td> <td>: </td> <td id = uploadSize> </td> </tr> <tr> <td> Geschwindigkeit hochladen </td> <td>: </td> <td id = uploadspeed> & nbsp; </td> </tr> <tr> <td> Gesamtzeit </td> <td>: </td> <td id = totalTime> & nbsp; </td> </tr> <tr> <td> verbleibende Zeit </td> <td>: </td> <td id = linkTime> & nbsp; </td> </tr> </table> </div> |
Teilen: Eine kurze Analyse von ASP-server.urlencode Inverse-Funktion: Urldecode Wenn es Leerzeichen gibt, verwenden Sie stattdessen. Wenn es andere Zeichen gibt, verwenden Sie stattdessen %ASCII. Wenn es vier Byte -Zeichen wie chinesische Zeichen gibt, verwenden Sie stattdessen zwei %ASCII. Manchmal müssen wir jedoch auch die codierte Zeichenfolge dekodieren, aber ASP liefert keine relevante