Recomendado: cómo obtener ASP para obtener la primera dirección de imagen en el código El siguiente es el contenido referenciado: 'Modifique el patrón nuevamente' El código que se detectará 'http://www.knowsky.com/asp.asp'leixing html o el código ubb'nópico no tiene
| El siguiente es el contenido citado: Ejemplo.asp <%@Lenguaje = VBScript CodePage = 65001%> <!-#incluye archivo = sundyupload.asp-> <% 'El documento que codifica en este ejemplo es UTF-8. Si se trata de un sistema con otra codificación, convierta la codificación a la codificación correspondiente, de lo contrario, los datos obtenidos en el formulario pueden estar confusos. Dim objuplroad, optar Dim xmlpath DIM FileFormName, OBJFile, contador opt = request.QueryString (OPT) Si opta = cargar entonces xmlpath = server.mappath (request.queryString (xmlpath)) 'Convertir la ruta virtual a la ruta real Establecer objupload = nuevo sundyupload 'Crear objeto de carga objupload.uploadinit xmlpath, UTF-8 contador = 1 Response.Write (Forma normal: & objupload.form (normalform) y <br> <br>) 'Obtenga datos de formulario Para cada archivo de archivo en objupload.objfile Establecer objFile = objupload.objfile (fileFormName) filesize = objfile.filesize strtemp = objfile.filepath Respuesta. Escribe strtemp FileName = Mid (strtemp, instrrev (strtemp, /) 1) Si fileSize> 0 entonces Response.write (tamaño de archivo: & filesize & <br>) Response.Write (nombre del archivo: & objfile.filepath & <br>) 'Response.Write (Descripción del archivo: & objupload.form (FileDesc & Counter) & <br> <br>) objfile.saveas server.mappath (.) & / upload / y nombre de archivo Response.Write Guardar en: & server.mappath (.) & / Upload / & filename & <br> <br> Final si contador = contador 1 Próximo Final si 'Especifique una ruta virtual para cargar el archivo de datos de la barra de progreso (archivo XML) 'Es mejor ser aleatorio, porque varias personas pueden cargarse al mismo tiempo, requiriendo diferentes datos de progreso 'Esta ruta debe pasar al componente de carga durante el envío para cambiar los datos de progreso durante el proceso de carga 'El cliente usa JavaScript para leer este archivo XML y muestra progreso xmlpath = upload/ & timer & .xml %> <html> <Evista> <meta http-oquiv = content-type content = text/html; charset = utf-8 /> <title> Ejemplo de barra de progreso de carga de Sundy </title> <Script Language = JavaScript> función chkfrm () { var objfrm = document.frmupload; if (objfrm.file1.value == && objfrm.file2.value ==) { alerta (seleccione un archivo); objfrm.file1.focus (); devolver falso; } objfrM.ACTION = Ejemplo.asp? Opt = upload & xmlpath = <%= xmlpath%>; startProgress ('<%= xmlpath%>'); // Barra de progreso de inicio devolver verdadero; } </script> </ablo> <Body> <form de nombre = frmupload método = post accy = ejemplo.asp enctype = multipart/form-data onSubMit = return chkfrm ()> Forma normal: <br> <input type = text name = normalform size = 40> <br> <br> Archivo 1: <br> <Entrada tipo = file name = file1 size = 40> </br> <input type = text name = FileDesC1 size = 30> <br> <br> Archivo 2: <br> <input type = file name = file2 size = 40> </br> <input type = text name = FileDesC2 size = 30> <br> Archivo 3: <br> <input type = file name = file3 size = 40> </br> Archivo 4: <br> <Entrada tipo = file name = file4 size = 40> </br> Archivo 5: <br> <Entrada tipo = file name = file5 size = 40> </br> <input type = Subt name = btnsubmit valor = enviar/> </form> </body> </html> Sundyupload.asp <meta http-oquiv = content-type content = text/html; charset = utf-8 /> <% Dim sundyupload_sourcedata Clase Sundyupload Dim objform, objfile, versión, objProgress Dim xmlpath, CharsetEncoding Formulario de función pública (strform) strform = lcase (strform) Si no es objform.exists (strform) entonces Forma = Demás Form = objform (strform) Final si Función final Archivo de funciones públicas (strfile) strfile = lcase (strfile) Si no objfile.exists (strfile) entonces Establecer archivo = nuevo fileInfo Demás Establecer archivo = objFile (strfile) Final si Función final Público subcobreinit (ProgressXMLPath, Charset) Dim requestData, sstart, crlf, sinfo, iinfostart, iinfoend, tstream, istart, thefile DIM IFILSIZE, SFILEPATH, SFILETYPE, SFORMVALUE, SFILENAME Dim ifindstart, ifindend Dim iformstart, iformend, sformname Versión = Barra de progreso de ancho de carga Versión 1.0 Establecer objform = server.createObject (scripting.dictionary) Establecer objfile = server.createObject (scripting.dictionary) If request.totalbytes <1 entonces salga sub Establecer tstream = server.createObject (ADODB.Stream) Establezca sundyupload_sourcedata = server.createObject (ADODB.Stream) Sundyupload_sourcedata.type = 1 Sundyupload_sourcedata.mode = 3 Sundyupload_sourcedata.open Dim Totalbytes Dim shitreadSize Dim DataPart, Partsize Dim OBJProgress TotalBytes = request.totalBytes 'Tamaño total ChunkreadSize = 64 * 1024 'Tamaño del bloque 64K Bytesread = 0 xmlpath = progressxmlpath CharsetEncoding = charset Si CharsetEncoding = entonces CharsetEncoding = UTF-8 Final si Establecer objProgress = nuevo progreso objProgress.ProgressInit (xmlpath) objProgress.UpdateProgress TotalBytes, 0 'Lectura de bucle Hacer mientras Bytesread <TotalBytes 'Lectura bloqueada Partsize = ChunkreadSize Si PartSize bytesread> totalbytes, entonces PartSize = TotalBytes - Bytesread Datapart = request.binaryRead (Partsize) Bytesread = bytesread Partsize Sundyupload_sourcedata.write dataPart objProgress.UpdateProgress TotalBytes, Bytesread Bucle 'Sundyupload_sourcedata.write request.binaryread (request.totalbytes) Sundyupload_sourcedata.position = 0 RequestData = sundyupload_sourcedata.read iformstart = 1 iformend = Lenb (requestData) CRLF = CHRB (13) y 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 y CRLF) 3 tstream.type = 1 tstream.mode = 3 tstream.apor Sundyupload_sourcedata.position = iformstart Sundyupload_sourcedata.copyto tstream, iinfoend -iformstart tstream.position = 0 tstream.type = 2 tstream.charset = charsetEncoding sinfo = tstream.readText tstream.close 'Obtenga el nombre del proyecto del formulario iformstart = instrb (iinfoend, requestData, sstart) ifindstart = instr (22, sinfo, nombre =, 1) 6 ifindend = instr (ifindstart, sinfo ,, 1) sformname = lcase (Mid (sinfo, ifindstart, ifindend-ifindstart)) 'Si es un archivo Si Instr (45, sinfo, FileName =, 1)> 0 entonces Establecer theFile = new FileInfo 'Obtenga el nombre del archivo 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) 'Obtener tipo de archivo ifindstart = instr (ifindend, sinfo, content-type :, 1) 14 ifindend = instr (ifindstart, sinfo, vbcr) theFile.FileType = Mid (sinfo, ifindstart, ifindend-ifindStart) theFile.FilStart = iinfoend theFile.filesize = iformstart -iinfoend -3 theFile.FormName = sFormName Si no objfile.exists (sformname) entonces objfile.add sFormName, thefile Final si Demás 'Si es un proyecto de formulario tstream.type = 1 tstream.mode = 3 tstream.apor 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 Si objform.exists (sFormName) entonces objform (sFormName) = objform (sFormName) &, & sFormValue Demás objform.add sFormName, sFormValue Final si Final si iformstart = iformstart istart 1 Encaminarse a RequestData = Establecer tstream = nada Final Sub class_initialize privado Final Sub class_merminate privado If request.totalbytes> 0 entonces objform.removeall objfile.removeall Establecer objform = nada Establecer objFile = nada Sundyupload_sourcedata.close Establecer sundyupload_sourcedata = nada Final si Establecer objProgress = nada Establecer objfso = server.createObject (scripting.filesystemObject) Si objfso.fileExists (xmlpath) entonces entonces objfso.deletefile (xmlpath) Final si Establecer objfso = nada Final Función privada GetFilepath (Papath) Si Patpath <> entonces GetFilepath = izquierda (pleno de pleno Demás GetFilepath = Final si Función final Función privada getFileName (Papath) Si Patpath <> entonces GetFileName = Mid (FullPath, Instrrev (FullPath, /) 1) Demás GetFileName = Final si Función final Clase final Clase FileInfo Dim FormName, FileName, FilePath, FileSize, FileType, FileStart Sub class_initialize privado FileName = Filepath = Filesize = 0 FilStart = 0 Formname = Tipo de filete = Final Saveas de la función pública (Papath) Dim DR, ErrorChar, yo Saveas = True 'Response.Write FullPath & ............... <br> 'FileName = ss.txt Si TRIM (FullPath) = o FilStart = 0 o FileName = o Right (FullPath, 1) =/ luego Salga de la función 'Response.Write 2 ............ <br> Establecer dr = createObject (ADODB.Stream) Dr.Mode = 3 Dr.Type = 1 Dr. Open Sundyupload_sourcedata.position = filStart Sundyupload_sourcedata.copyto dr, filesize Dr.Savetofile Fullpath, 2 Dr.Close Establecer dr = nada Saveas = falso Función final Clase final Progreso de la clase Dim objdom, xmlpath Dim Starttime Sub class_initialize privado Final Sub progreso público (XMLPATHTMP) Dim objecanía, objchild Dim objpi xmlpath = xmlpathtmp Establecer objdom = server.createObject (Microsoft.xmldom) Establecer objroot = objdom.createElement (progreso) objdom.appendChild Objroot Establecer objchild = objdom.createElement (Totalbytes) objchild.text = 0 objroot.appendchild objchild Establecer objchild = objdom.createElement (subaLoadbytes) objchild.text = 0 objroot.appendchild objchild Establecer objchild = objdom.createElement (cargando porcentual) objchild.text = 0% objroot.appendchild objchild Establecer objchild = objdom.createElement (cargando) objchild.text = 0 objroot.appendchild objchild Establecer objchild = objdom.createElement (tiempo total) objchild.text = 00:00:00 objroot.appendchild objchild Establecer objchild = objdom.createElement (tiempo izquierdo) objchild.text = 00:00:00 objroot.appendchild objchild Establecer objpi = objdom.createProcessingInstruction (xml, versión = '1.0' encoding = 'utf-8') objdom.insertbefore objpi, objdom.childnodes (0) objdom.save xmlpath Establecer objpi = nada Establecer objchild = nada Establecer objroot = nada Establecer objdom = nada Final Sub UpdateProgress (Tbytes, Rbytes) Dim Etime, CurrentTime, Speed, TotalTime, LeftTime, porcentaje Si rbytes = 0 entonces starttime = temporizador Establecer objdom = server.createObject (Microsoft.xmldom) objdom.load (xmlpath) objdom.selectsinglenode (// totalbytes) .text = tbytes objdom.save (xmlpath) Demás velocidad = 0.0001 CurrentTime = temporizador Etime = CurrentTime - Starttime Si etime> 0 entonces velocidad = rbytes / etime Total Time = tbytes/Speed Tiempo izquierdo = (tbytes - rbytes) / velocidad porcentaje = redondo (rbytes *100 / tbytes) 'objdom.selectsinglenode (// uploadBytes) .Text = rbytes 'objdom.selectsinglenode (// uploadspeed) .text = velocidad 'objdom.selectsinglenode (// total tiempo) .text = total tiempo 'objdom.selectsinglenode (// izquierda) .Text = tiempo izquierdo objdom.selectsinglenode (// uploadBytes) .Text = formatFilesize (rbytes) &/& formatFilesize (tbytes) objdom.selectsinglenode (// cargar porcentual) .text = porcentaje objdom.selectsinglenode (// uploadspeed) .text = formatFilesize (velocidad) y/sec objdom.selectsinglenode (// total tiempo) .text = sectotime (total tiempo) objdom.selectsinglenode (// izquierda) .Text = sectotime (tiempo izquierdo) objdom.save (xmlpath) Final si Final Función privada Sectotime (Sec) Dim H: H = 0 Dim M: M = 0 Dim S: S = 0 h = redondo (sec/3600) M = Round ((Sec Mod 3600) / 60) s = redondo (mod mod 60) Si len (h) = 1 entonces h = 0 & h Si len (m) = 1 entonces m = 0 & m Si len (s) = 1 entonces s = 0 & s Sectotime = (h &: & m &: & s) Función final Formato de función privadaFilesSe (FSIZE) Dim Radio, K, M, G, UNITTMP K = 1024 M = 1024*1024 G = 1024*1024*1024 radio = 1 Si Fix (fsize / g)> 0.0 entonces unittmp = gb radio = g Elseif Fix (fsize / m)> 0 entonces UNITTMP = MB radio = m Elseif Fix (fsize /k)> 0 entonces unittmp = kb radio = k Demás unittmp = b radio = 1 Final si Si radio = 1 entonces FormatFilesize = fsize & & nbsp; y unittmp Demás FormatFilesize = FormatNumber (FSize/Radio, 3) y UNITTMP Final si Función final Sub class_merminate privado Establecer objdom = nada Final Clase final 'http://www.cuoxin.com/ %> <Script Language = JavaScript> // Iniciar barra de progreso función startProgress (xmlpath) { DisplayProgress (); setProgressDivPos (); setTimeout (displayProgressBar ('xmlpath'), 500); } función displayProgressBar (xmlpath) { var xmldoc = new ActiveXObject (msxml2.domdocument.3.0); xmldoc.async = false; xmldoc.load (xmlpath); if (xmldoc.parseError.errrocode! = 0) { VAR ERROR = XMLDOC.PARSEERROR; alerta (error. setTimeout (displayProgressBar ('xmlpath'), 1000); devolver; } var root = xmldoc.documentelement; // nodo raíz var totalbytes = root.childnodes (0) .Text; var uploadBytes = root.childnodes (1) .Text; Var porcentaje = root.childnodes (2) .Text; Progress porcent.innerhtml = porcentual %; ProgressBar.Style.Width = porcentaje; uploadSize.innerHtml = uploadBytes; uploadSpeed.innerhtml = root.childnodes (3) .Text; TotalTime.innerhtml = root.childnodes (4) .Text; LeftTime.innerhtml = root.childnodes (5) .Text; if (porcentaje <100) { setTimeout (displayProgressBar ('xmlpath'), 1000); } } función displayProgress () { var objProgress = document.getElementById (progreso); objProgress.style.display =; } function Closeprogress () { var objProgress = document.getElementById (progreso); objProgress.style.display = None; } función setProgressDivPos () { var objProgress = document.getElementById (progreso); objProgress.style.top = document.body.scrolltop (document.body.clientHeight-Document.getElementById (progreso) .Offsetheight)/2 objProgress.style.left = document.body.scrollleft (document.body.clientWidth-Document.getElementById (progreso) .OffsetWidth)/2; } </script> <estilo type = text/css> .progreso { Posición: Absoluto; relleno: 4px; arriba: 50; Izquierda: 400; Font-Family: Verdana, Helvetica, Arial, Sans-Serif; tamaño de fuente: 12px; Ancho: 250px; Altura: 100px; Antecedentes: #fffbd1; Color: #3D2C05; borde: 1px sólido #715208; / * Mozilla Propietario */ -Moz-Border-Radius: 5px; /*-Opacidad de Moz: 0.95; */ } . Tabla de progreso, .progress td { tamaño de fuente: 9pt; } .Bar{ Ancho: 100%; Altura: 15px; Color de fondo: #CCCCCC; Border: 1px Incrito #666666; Botón de margen: 4px; } .Progresspercent { tamaño de fuente: 9pt; Color: #000000; Altura: 15px; Posición: Absoluto; Índice Z: 20; Ancho: 100%; Text-Align: Center; } .ProgressBar { Color de fondo:#91D65C; Ancho: 1px; Altura: 15px; } </style> <div id = style de progreso = pantalla: ninguno; class = Progress> <Div class = Bar> <div ID = progresover class = Progresspercent> 0%</div> <div id = progressbar class = ProgressBar> </div> </div> <tabla de tabla = 0 CellPacing = 0 CellPadding = 2> <tr> <TD> Acorded </td> <TD>: </td> <td id = uploadSize> </td> </tr> <tr> <TD> Velocidad de carga </td> <TD>: </td> <td id = uploadSpeed> & nbsp; </td> </tr> <tr> <TD> Tiempo total </td> <TD>: </td> <td id = total tiempo> & nbsp; </td> </tr> <tr> <TD> tiempo restante </td> <TD>: </td> <td id = LeftTime> & nbsp; </td> </tr> </table> </div> |
Compartir: un breve análisis de ASP-server.urlencode Función inversa: Urldecode Si hay espacios, use en su lugar. Si hay otros caracteres, use %ASCII en su lugar. Si hay cuatro caracteres de bytes como los caracteres chinos, use dos %ASCII en su lugar. Sin embargo, a veces también necesitamos decodificar la cadena que se ha codificado, pero ASP no proporciona relevante