Recomendado: Como obter o ASP para obter o primeiro endereço de imagem no código A seguir, o conteúdo referenciado: 'Modifique o padrão novamente' o código a ser detectado 'http://www.knowsky.com/asp.asp'leixing html ou código ubb'nopic não possui
| A seguir, o conteúdo citado: Exemplo.asp <%@Idioma = vbscript codePage = 65001%> <!-#inclua arquivo = sundyupload.asp-> <% 'O documento que codifica neste exemplo é UTF-8. Se for um sistema com outra codificação, converta a codificação na codificação correspondente, caso contrário, os dados obtidos no formulário podem ser iluminados. Dim objuupload, Opt Dim XMLPath Dim FileFormName, objfile, contador opt = request.QueryString (OPT) Se opt = fazer upload então xmlpath = server.mappath (request.QueryString (xmlpath)) 'Converter caminho virtual para o caminho real Definir objepload = new SundyUpload 'Criar objeto de upload objuPload.uploadinit xmlpath, utf-8 contador = 1 Response.Write (Formulário Normal: & objuPload.form (Normalform) & <br> <br>) 'Get Form Data Para cada nome de arquivo em objuupload.objfile Definir objfile = objuPload.objfile (FileFormName) filesize = objfile.filesize strTemp = objfile.FilePath Response.Write strTemp nome do arquivo = MID (STRTEMP, Instrrev (strTemp, /) 1) Se filesize> 0 então Response.Write (Tamanho do arquivo: & FileShize & <br>) Response.Write (Nome do arquivo: & objfile.filepath & <br>) 'Response.Write (Descrição do arquivo: & objuPload.form (FileDesc & Counter) & <br> <br>) objfile.saveas server.mappath (.) & / upload / & filename Response.Write Salvar em: & server.mappath (.) & / Upload / & filename & <br> <br> Final se contador = contador 1 Próximo Final se 'Especifique um caminho virtual para fazer upload do arquivo de dados da barra de progresso (arquivo xml) 'É melhor ser aleatório, porque várias pessoas podem fazer upload ao mesmo tempo, exigindo diferentes dados de progresso 'Esse caminho precisa ser passado para o componente de upload durante a submissão para alterar os dados de progresso durante o processo de upload 'O cliente usa o JavaScript para ler este arquivo XML e exibe o progresso xmlpath = upload/ & timer & .xml %> <html> <head> <meta http-equiv = content-type content = text/html; charset = utf-8 /> Exemplo </title> Sundy Upload Progress Exemplo </title> <idioma do script = javascript> função chkfrm () { var objfrm = document.frmupload; if (objfrm.file1.value == && objfrm.file2.Value ==) { alerta (selecione um arquivo); objfrm.file1.focus (); retornar falso; } objfrm.action = exemplo.asp? opt = upload & xmlpath = <%= xmlpath%>; startProgress ('<%= xmlpath%>'); // Barra de progresso inicial retornar true; } </script> </head> <Body> <nome de forma = FRMUPLOAD Método = pós-ação = exemplo.asp Enctype = Multipart/Form-Data Onsubmit = return chkfrm ()> Formulário normal: <br> <Tipo de entrada = nome do texto = tamanho normal da forma = 40> <br> <br> Arquivo 1: <br> <Tipo de entrada = Nome do arquivo = FILE1 TAMANHO = 40> </br> <Tipo de entrada = Nome do texto = FileDESC1 Tamanho = 30> <br> <br> Arquivo 2: <br> <Tipo de entrada = Nome do arquivo = File2 Tamanho = 40> </br> <Tipo de entrada = Nome do texto = FileDesc2 Tamanho = 30> <br> Arquivo 3: <br> <Tipo de entrada = Nome do arquivo = Arquivo3 Tamanho = 40> </br> Arquivo 4: <br> <Tipo de entrada = Nome do arquivo = Arquivo4 Tamanho = 40> </br> Arquivo 5: <br> <Tipo de entrada = Nome do arquivo = File5 Tamanho = 40> </br> <Tipo de entrada = Nome de envio = BtnsubMit Value = Submet/> </morm> </body> </html> Sundyupload.asp <meta http-equiv = content-type content = text/html; charset = utf-8 /> <% Dim sundyupload_sourcedata Classe Sundyupload Dim objform, objfile, versão, objProgress Dim XMLPath, CHARSETENCODING Formulário de função pública (STRorm) strform = lcase (strform) Se não objform.exists (strform), então Formulário = Outro Forma = objform (strform) Final se Função final Arquivo de função pública (strfile) strfile = lcase (strfile) Se não objfile.exists (strfile) então Set file = new FileInfo Outro Set file = objfile (strfile) Final se Função final Sub -UploadInit Public (ProgressxmlPath, Charset) Dim RequestData, Sstart, CRLF, Sinfo, iinfostart, iinfoend, tStream, istart, thefile Dim ifilesize, sfilepath, sfileType, sformvalue, sfilename Dim ifindstart, ifndend Dim Iformstart, iformend, sformName Versão = Barra de progresso da largura do upload versão 1.0 Set objform = server.createObject (script.dictionary) Set objfile = server.createObject (script.dictionary) Se request.TotalBytes <1 então saia submarino Definir tStream = server.createObject (adodb.stream) Definir sundyupload_sourcedata = server.createObject (adodb.stream) Sundyupload_sourcedata.type = 1 Sundyupload_sourcedata.mode = 3 Sundyupload_sourcedata.open Dim Totalbytes Dim ChunkReadSize Data Datapart, Parseize Dim objProgress Totalbytes = request.totalbytes tamanho total ChunkReadSize = 64 * 1024 'Tamanho do bloco 64K Bytesread = 0 xmlPath = ProgressxmlPath Charsetencoding = charset Se charsetencoding = então CharsetEncoding = UTF-8 Final se Definir objprogress = novo progresso objProgress.ProgressInit (XMLPath) objProgress.UpDateProgress Totalbytes, 0 'Leitura em loop Faça enquanto bytesread <Totalbytes 'Leia bloqueada Parseize = ChunkReadSize Se parte de BytesRead> Totalbytes, em parte, então Parseize = Totalbytes - BytesRead DataPart = request.binaryRead (Parseize) BytesRead = bytesRead Parpize Sundyupload_sourcedata.write Datapart objProgress.UpDateProgress Totalbytes, bytesread Laço 'Sundyupload_sourcedata.write request.binaryRead (request.totalbytes) Sundyupload_sourcedata.Position = 0 RequestData = sundyupload_sourcedata.read iformstart = 1 IFORMEND = LENB (requestData) CRLF = Chrb (13) e Chrb (10) sstart = midb (requestData, 1, instrb (iformstart, requestdata, crlf) -1) istart = lenb (sstart) IFORMSTART = IFORMSTART ISTART 1 Enquanto (iformstart 10) <iformend iinfoend = Instrb (iformstart, requestData, CRLF & CRLF) 3 tStream.Type = 1 tStream.mode = 3 tStream.open Sundyupload_sourcedata.Position = iformstart Sundyupload_sourcedata.copy para tStream, iinfoend-pindstart tStream.Position = 0 tStream.Type = 2 tStream.Charset = CharsetEncoding sinfo = tStream.readText tStream.close 'Obtenha o nome do projeto do formulário iformstart = Instrb (iinfoend, requestData, sstart) ifindstart = instrum (22, sinfo, nome =, 1) 6 ifndend = Instr (Ifindstart, sinfo ,, 1) sformName = lcase (MID (Sinfo, Ifindstart, ifndend-ifindstart)) 'Se for um arquivo Se Instr (45, Sinfo, nome do arquivo =, 1)> 0 Então Defina o arquivo = novo FileInfo 'Obtenha o nome do arquivo ifindstart = instrum (ifndend, sinfo, nome do arquivo =, 1) 10 ifndend = Instr (Ifindstart, sinfo ,, 1) sfilename = mid (sinfo, ifindstart, ifndend-ifindstart) thefile.fileName = getFileName (sfileName) theFile.FilePath = getFilePath (SfileName) 'Obtenha o tipo de arquivo ifindstart = instrum (ifndend, sinfo, tipo de conteúdo :, 1) 14 ifIndend = Instr (Ifindstart, Sinfo, VBCR) theFile.FileType = MID (Sinfo, Ifindstart, ifndend-ifindstart) theFile.FileStart = iinfoend thefile.filesize = iformstart -iinfoend -3 thefile.formName = sformName Se não objfile.exists (sformName) então objfile.add sformName, thefile Final se Outro 'Se for um projeto de formulário tStream.Type = 1 tStream.mode = 3 tStream.open Sundyupload_sourcedata.Position = iinfoend Sundyupload_sourcedata.copy para tStream, iformstart-iinfoend-3 tStream.Position = 0 tStream.Type = 2 tStream.Charset = CharsetEncoding sformValue = tStream.readText tStream.close Se objform.exists (sformName) então objform (sformName) = objform (sformName) &, & sformValue Outro objform.add sformName, sformValue Final se Final se IFORMSTART = IFORMSTART ISTART 1 Wend RequestData = Definir tStream = nada Final sub Sub -Class_initialize privado Final sub Sub -Class_terminado privado Se request.TotalBytes> 0 então objform.removeall objfile.removeall Defina objform = nada Defina objfile = nada Sundyupload_sourcedata.close Defina sundyupload_sourcedata = nada Final se Definir objprogress = nada Set objfso = server.createObject (script.filesystemoBject) Se objfso.fileExists (xmlpath) então objfso.deletefile (xmlpath) Final se Defina objfso = nada Final sub Função privada getFilePath (fullpath) Se Fullpath <> então GetFilePath = esquerda (Fullpath, Instrrev (Fullpath,)) Outro GetFilePath = Final se Função final Função privada getfilename (fullpath) Se Fullpath <> então GetFilename = MID (Fullpath, Instrrev (Fullpath, /) 1) Outro GetFilename = Final se Função final Classe final Classe fileInfo Dim FormName, FileName, FilePath, FileSize, FileType, FileStart Sub -Class_initialize privado Nome do arquivo = Filepath = FileSize = 0 FileStart = 0 Formname = FileType = Final sub Função pública Saveas (Fullpath) Dim Dr, Errorchar, i Saveas = true 'Response.Write Fullpath & ............... <br> 'Nome do arquivo = ss.txt Se Trim (Fullpath) = ou FileStart = 0 ou FileName = ou Right (Fullpath, 1) =/ então Função de saída 'Response.Write 2 ............ <br> Set dr = createObject (adodb.stream) Dr.Mode = 3 Dr.Type = 1 Dr.Open Sundyupload_sourcedata.Position = FileStart Sundyupload_sourcedata.copy para dr, fileSize Dr.Savetofile Fullpath, 2 Dr.Close Definir dr = nada Saveas = false Função final Classe final Progresso da classe Dim Objdom, XMLPath Dim StartTime Sub -Class_initialize privado Final sub Public Sub Progressinit (XMLPathtmp) Dim objroot, objchild Dim objpi xmlpath = xmlPathtmp Set objdom = server.createObject (Microsoft.xmldom) Set objroot = objdom.createElement (progresso) 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 (upload gercent) 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 (hora esquerda) objchild.text = 00:00:00 objroot.appendChild Objchild Set objpi = objdom.createprocessingInstruction (xml, versão = '1.0' coding = 'utf-8') objdom.InsertBe antes de objpi, objdom.Childnodes (0) objdom.Save XMLPath Definir objpi = nada Definir objchild = nada Definir objroot = nada Definir objdom = nada Final sub Sub UpdateProgress (Tbytes, Rbytes) Etime sombrio, tempo de corrente, velocidade, total de tempo, tempo de esquerda, porcentagem Se rbytes = 0 então startTime = timer Set objdom = server.createObject (Microsoft.xmldom) objdom.load (xmlpath) objdom.SelectSingLenode (// totalbytes) .Text = tbytes objdom.save (xmlpath) Outro velocidade = 0,0001 CurrentTime = Timer Etime = Currenttime - StartTime Se Etime> 0 então Speed = Rbytes / Etime TotalTime = tBytes/velocidade LeftTime = (tbytes - rbytes) / velocidade por cento = redonda (rbytes *100 / tbytes) 'Objdom.SelectSingLenode (// UPLOPBYTES) .TEXT = RBYTES 'Objdom.SelectSingleNode (// uploadpeed) .text = speed 'Objdom.SelectSingLenode (// TotalTime) .Text = TotalTime 'Objdom.SelectSingleNode (// LeftTime) .Text = LeftTime objdom.SelectSinglenode (// uploadbytes) .text = formatfilesize (rbytes) &/& formatfilesize (tbytes) objdom.SelectSingleNode (// uploadPercent) .text = por cento objdom.SelectSinglenode (// uploadpeed) .text = formatFilesize (velocidade) e/s objdom.SelectSingleNode (// TotalTime) .Text = Sectotime (TotalTime) objdom.SelectSinglenode (// LeftTime) .Text = Sectotime (LeftTime) objdom.save (xmlpath) Final se Final sub Função privada Sectotime (SEC) Dim h: h = 0 Dim M: M = 0 Dim s: s = 0 h = rodada (seg/3600) M = redonda ((SEC mod 3600) / 60) s = redonda (seg mod 60) Se len (h) = 1 então h = 0 & h Se Len (m) = 1 então M = 0 & m Se len (s) = 1 então s = 0 & s Sectotime = (h &: & m &: & s) Função final Função privada FormatFilesize (fsize) Dim Radio, K, M, G, unittmp k = 1024 M = 1024*1024 g = 1024*1024*1024 rádio = 1 Se consertar (fsize / g)> 0,0 então unittmp = gb rádio = g Elseif consert (fsize / m)> 0 então unittmp = mb rádio = m Elseif consert (fsize /k)> 0 então unittmp = kb rádio = k Outro unittmp = b rádio = 1 Final se Se rádio = 1 então FormatFilesize = fsize & & nbsp; & unittmp Outro Formatfilesize = formatNumber (fsize/rádio, 3) e unittmp Final se Função final Sub -Class_terminado privado Definir objdom = nada Final sub Classe final 'http://www.cuoxin.com/ %> <idioma do script = javascript> // Iniciar a barra de progresso função startProgress (xmlpath) { displayProgress (); setProgressDivPos (); setTimeout (displayProgressBar ('xmlpath'), 500); } Função 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; Alerta (Error.Reason) setTimeout (displayProgressBar ('xmlpath'), 1000); retornar; } var root = xmldoc.documentElement; // nó raiz var totalbytes = root.ChildNodes (0) .Text; var uploadBytes = root.ChildNodes (1) .Text; var % = root.ChildNodes (2) .text; ProgressPercent.innerhtml = % %; ProgressBar.style.width = % %; uploadsize.innerhtml = uploadbytes; uploadspeed.innerhtml = root.childnodes (3) .text; totalTime.innerhtml = root.ChildNodes (4) .Text; lefttime.innerhtml = root.childnodes (5) .text; if (porcentagem <100) { setTimeout (displayProgressBar ('xmlpath'), 1000); } } Função DisplayProgress () { var objProgress = document.getElementById (Progress); objProgress.style.display =; } função closeProgress () { var objProgress = document.getElementById (Progress); objProgress.style.display = nenhum; } função setProgressDivPos () { var objProgress = document.getElementById (Progress); objProgress.style.top = document.body.scrolltop (document.body.clientHeight-cocument.getElementById (Progress) .offsetHeight)/2 objProgress.style.left = document.body.scrollleft (document.body.clientwidth-cocument.getElementById (progresso) .offsetWidth)/2; } </script> <tipo de estilo = texto/css> .Progress { Posição: Absoluto; preenchimento: 4px; Top: 50; Esquerda: 400; Fonte-família: Verdana, Helvetica, Arial, Sans-Serif; tamanho de fonte: 12px; Largura: 250px; Altura: 100px; Antecedentes: #fffbd1; Cor: #3D2C05; fronteira: 1px Solid #715208; / * Proprietário de Mozilla */ -Moz-Border-Radius: 5px; /*-Moz-opacidade: 0,95; */ } .Progress tabela, .Progress td { tamanho de fonte: 9pt; } .Bar{ largura: 100%; Altura: 15px; Background-Color: #CCCCCC; fronteira: 1px Inserção #666666; Margin-Bottom: 4px; } .ProgressPercent { tamanho de fonte: 9pt; Cor: #000000; Altura: 15px; Posição: Absoluto; Z-Index: 20; largura: 100%; Alinhamento de texto: centro; } .ProgressBar { Background-Color:#91D65C; Largura: 1px; Altura: 15px; } </style> <div id = progresso estilo = display: nenhum; class = progresso> <div class = bar> <div ID = ProgressPercent Class = ProgressPercent> 0%</div> <div ID = ProgressBar Class = ProgressBar> </div> </div> <borda da tabela = 0 CellPacing = 0 CellPadding = 2> <tr> <Td> concedido </td> <Td>: </td> <td id = uploadsize> </td> </tr> <tr> <td> Velocidade de upload </td> <Td>: </td> <td id = uploadspeed> & nbsp; </td> </tr> <tr> <td> Tempo total </td> <Td>: </td> <TD ID = TotalTime> & nbsp; </td> </tr> <tr> <td> Tempo restante </td> <Td>: </td> <td id = lefttime> & nbsp; </td> </tr> </tabela> </div> |
Compartilhar: Uma breve análise do asp-server.urlencode Inverse Função: Urldecode Se houver espaços, use. Se houver outros caracteres, use %ASCII. Se houver quatro caracteres de bytes, como caracteres chineses, use dois %ASCII. No entanto, às vezes também precisamos decodificar a string que foi codificada, mas o ASP não fornece