Рекомендуется: как заставить ASP получить первый адрес изображения в коде Ниже приведено ссылочное содержание: «снова изменить шаблон».
| Ниже приведено цитируемое содержание: Пример.asp <%@Language = VBScript CodePage = 65001%> <!-#Включите файл = sundyupload.asp-> <% «Кодирование документа в этом примере-UTF-8. Если это система с другими кодировками, пожалуйста, преобразуйте кодирование в соответствующее кодирование, в противном случае данные, полученные в форме, могут быть искажены. Dim objupload, Opt DIM XMLPATH Dim FileFormName, objfile, счетчик opt = request.querystring (opt) Если opt = загрузить, тогда xmlpath = server.mappath (request.querystring (xmlpath)) 'преобразовать виртуальный путь в фактический путь Установить objupload = new sundyupload 'создать объект загрузки objupload.uploadinit xmlpath, UTF-8 счетчик = 1 Response.write (нормальная форма: & objupload.form (normalform) и <br> <br>) 'Получите данные формы Для каждого файла wordformname в objupload.objfile Установить objfile = objupload.objfile (fileformname) FileSize = objFile.filesize strtemp = objfile.filepath Response.write strtemp filename = mid (strtemp, instrrev (strtemp, /) 1) Если файл размером> 0, тогда Response.write (размер файла: & filesize & <br>) Response.write (имя файла: & objfile.filepath & <br>) 'Response.write (Описание файла: & objupload.form (filedesc & counter) и <br> <br>) objfile.saveas server.mappath (.) & / upload / & filename Response.Write Save AT: & server.mappath (.) & / Upload / & filename & <br> <br> Конец, если счетчик = счетчик 1 Следующий Конец, если 'Укажите виртуальный путь для загрузки файла панели данных о загрузке (файл XML) «Лучше быть случайным, потому что несколько человек могут загружать одновременно, требуя разных данных о прогрессе «Этот путь должен быть передан в компонент загрузки во время представления, чтобы изменить данные о прогрессе во время процесса загрузки 'Клиент использует JavaScript для чтения этого файла XML и отображает прогресс xmlpath = upload/ & timer & .xml %> <html> <голова> <meta http-equiv = content-type content = text/html; charset = utf-8 /> <title> Sundult загрузить пример прогресса пример </title> <сценарий языка = javascript> функция chkfrm () { var objfrm = document.frmupload; if (objfrm.file1.value == && objfrm.file2.value ==) { предупреждение (пожалуйста, выберите файл); objfrm.file1.focus (); вернуть ложь; } objfrm.Action = example.asp? opt = upload & xmlpath = <%= xmlpath%>; startProgress ('<%= xmlpath%>'); // Начало панели прогресса вернуть истину; } </script> </head> <тело> <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 = отправить имя = btnsubmit value = spect/> </form> </body> </html> Sundyupload.asp <meta http-equiv = content-type content = text/html; charset = utf-8 /> <% Dim sundyupload_sourcedata Класс Sundyupload Dim objform, objfile, версия, objprogress Dim xmlpath, charsetencoding Форма публичной функции (Strform) strform = lcase (strform) Если не objform.exists (strform), тогда Форма = Еще Form = objform (strform) Конец, если Конечная функция Файл публичной функции (strfile) strfile = lcase (strfile) Если не objfile.exists (strfile), тогда SET FILE = NEW FILEINFO Еще SET FILE = OBJFILE (strfile) Конец, если Конечная функция Public SubloadInit (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 Версия = загрузка ширины Установить objform = server.createObject (scripting.dictionary) Установить objfile = server.createObject (scripting.dictionary) Если запрос. Установить 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 Charseencoding = charset Если charsetencoding = then Charsetencoding = utf-8 Конец, если Установить objProgress = новый прогресс objprogress.progressinit (xmlpath) objProgress.UpdateProgress TotalBytes, 0 'Loop Chunked Reading Делай, пока байт 'Заблокировано читать Partize = chunkreadsize Если Partize BytesRead> TotalBytes, затем Partize = TotalBytes - BytesRead DataPart = request.binaryRead (partsize) BytesRead = BytesRead Partsize Sundyupload_sourcedata.write datapart objprogress.updateprogress totalbytes, Bytesread Петля '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 В то время как (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-officestart 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))) 'Если это файл Если instr (45, sinfo, filename =, 1)> 0 тогда Установите 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 Если не objfile.exists (sformname), тогда objfile.add sformname, thefile Конец, если Еще 'Если это проект формы 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 Если objform.exists (sformname), то objform (sformname) = objform (sformname) & & sformvalue Еще objform.add sformname, sformvalue Конец, если Конец, если iformstart = iformstart iStart 1 Венд RequestData = Установить tstream = ничего Конец суб Private sub class_initialize Конец суб Приватный sub class_terminate Если запрос.totalbytes> 0 тогда objform.removeall objfile.removeall Установить objform = ничего Установить objfile = ничего Sundyupload_sourcedata.close Установить sundyupload_sourcedata = ничего Конец, если Установить objprogress = ничего Установить objfso = server.createObject (scripting.filesystemobject) Если objfso.filexists (xmlpath), то objfso.deletefile (xmlpath) Конец, если Установить objfso = ничего Конец суб Частная функция GetFilePath (FullPath) Если FullPath <> Then Then GetFilePath = Left (FullPath, Instrrev (FullPath,)) Еще GetFilePath = Конец, если Конечная функция Частная функция getFilename (FullPath) Если FullPath <> Then Then GetFilEname = Mid (FullPath, Instrrev (FullPath, /) 1) Еще GetFilename = Конец, если Конечная функция Конечный класс Класс FileInfo DIM FormName, имя файла, filePath, FileType, FileType, Filestart Private sub class_initialize Имя файла = FilePath = FileSize = 0 Filestart = 0 Formname = FileType = Конец суб Публичная функция saveas (fullpath) Dim DR, TrraRCHAR, я Saveas = true 'Response.write fullpath & ............... <br> 'Filename = ss.txt Если Trim (fullPath) = или Filestart = 0 или имя файла = или справа (FullPath, 1) =/ Then Exit Function 'Response.write 2 ............ <br> Установить dr = createObject (adodb.stream) Dr.Mode = 3 Dr.Type = 1 Доктор Опен Sundyupload_sourcedata.position = filestart Sundyupload_sourcedata.copyto dr, filesize Dr.Savetofile FullPath, 2 Доктор Клос Установить DR = ничего Saveas = false Конечная функция Конечный класс Класс прогресс Dim objdom, Xmlpath Dim Starttime Private sub class_initialize Конец суб Public Sub ProgressInit (xmlpathtmp) Dim objroot, objchild Dim objpi xmlpath = xmlpathtmp Установить objdom = server.createObject (microsoft.xmldom) Установить objroot = objdom.createElement (прогресс) objdom.appendchild objroot Установить objchild = objdom.createElement (totalbytes) objchild.text = 0 objroot.appendchild objchild Установить objchild = objdom.createElement (uploadBytes) objchild.text = 0 objroot.appendchild objchild Установить objchild = objdom.createElement (uploadpercent) objchild.text = 0% objroot.appendchild objchild Установить objchild = objdom.createElement (uploadspeed) objchild.text = 0 objroot.appendchild objchild Установить objchild = objdom.createElement (totaltime) objchild.text = 00:00:00 objroot.appendchild objchild Установить objchild = objdom.createElement (левша) objchild.text = 00:00:00 objroot.appendchild objchild Установите objpi = objdom.createProcessingInstruction (xml, version = '1.0' eNcoding = 'UTF-8') objdom.insertbefore objpi, objdom.childnodes (0) objdom.save xmlpath Установить objpi = ничего Установить objchild = ничего Установить objroot = ничего Установить objdom = ничего Конец суб Sub UpdateProgress (tbytes, rbytes) Dim Etime, Currenttime, Speed, Totaltime, Leftlime, процент Если rbytes = 0, то startTime = таймер Установить objdom = server.createObject (microsoft.xmldom) objdom.load (xmlpath) objdom.selectsinglenode (// totalbytes) .Text = tbytes objdom.save (xmlpath) Еще скорость = 0,0001 CurrentTime = таймер etime = currenttime - начало Если etime> 0, то speed = rbytes / etime TotalTime = tbytes/скорость левша = (tbytes - rbytes) / скорость процент = раунд (rbytes *100 / tbytes) 'objdom.selectsinglenode (// uploadbytes) .text = rbytes 'objdom.selectsinglenode (// uploadspeed) .text = speed 'objdom.selectsinglenode (// totaltime) .text = totaltime 'objdom.selectsinglenode (// Leftlime) .Text = Levertime objdom.selectsinglenode (// uploadbytes) .text = formatfilesize (rbytes) &//& formatfilesize (tbytes) objdom.selectsinglenode (// uploadpercent) .Text = процент objdom.selectsinglenode (// uploadspeed) .text = formatfilesize (speed) &/sec objdom.selectsinglenode (// totaltime) .text = sectotime (totaltime) objdom.selectsinglenode (// левша) .text = sectotime (влево) objdom.save (xmlpath) Конец, если Конец суб частная функция Sectotime (Sec) Dim H: H = 0 Dim M: M = 0 Dim S: S = 0 h = раунд (сек/3600) m = раунд ((Sec Mod 3600) / 60) S = раунд (SEC MOD 60) Если len (h) = 1, то h = 0 & h Если len (m) = 1, то m = 0 & m Если len (s) = 1, то s = 0 & s Sectotime = (H &: & M &: & S) Конечная функция частная функция Formatfilesize (fsize) Dim Radio, K, M, G, Unittmp k = 1024 M = 1024*1024 G = 1024*1024*1024 радио = 1 Если исправить (fsize / g)> 0,0, тогда unittmp = gb радио = g Elseif fix (fsize / m)> 0 тогда unittmp = mb радио = m Elseif fix (fsize /k)> 0 тогда unittmp = kb Радио = k Еще unittmp = b радио = 1 Конец, если Если радио = 1, тогда Formatfilesize = fsize & & nbsp; & Unittmp Еще FormatFilesize = FormatNumber (fsize/Radio, 3) и Unittmp Конец, если Конечная функция Приватный sub class_terminate Установить objdom = ничего Конец суб Конечный класс 'http://www.cuoxin.com/ %> <сценарий языка = javascript> // Начнете план прогресса function startProgress (xmlpath) { DisplayProgress (); SetProgressDivpos (); setTimeout (DisplayProgressBar ('xmlpath'), 500); } функция 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; предупреждение (error.reess) setTimeout (DisplayProgressBar ('xmlpath'), 1000); возвращаться; } var root = xmldoc.documentelement; // корневой узел var totalBytes = root.ChildNodes (0) .Text; var uploadbytes = root.childnodes (1) .Text; var penest = root.childnodes (2) .Text; Progresspercent.innerhtml = процент %; Progressbar.style.width = процент %; uploadsize.innerhtml = uploadbytes; uploadspeed.innerhtml = root.childnodes (3) .Text; totaltime.innerhtml = root.childnodes (4) .Text; Levertime.innerhtml = root.ChildNodes (5) .Text; if (процент <100) { setTimeout (DisplayProgressBar ('xmlpath'), 1000); } } функция DisplayProgress () { var objProgress = document.getElementById (Progress); objprogress.style.display =; } function closeProgress () { var objProgress = document.getElementById (Progress); objprogress.style.display = нет; } функция 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> <стиль типа = текст/css> .progress { позиция: абсолютно; Заполнение: 4px; Верх: 50; Слева: 400; Семейство шрифта: Вердана, Хельветика, Ариал, Санс-Сэриф; размер шрифта: 12px; Ширина: 250px; высота: 100px; Фон: #fffbd1; Цвет: #3D2C05; Граница: 1PX SOLID #715208; / * Mozilla Propreatary */ -Моз-грамотный радий: 5px; /*-Moz-opbity: 0,95; */ } .progress Table, .progress td { размер шрифта: 9pt; } .Бар{ Ширина: 100%; высота: 15px; фоновый цвет: #cccccc; Граница: 1PX вставка № 666666; маржинальный бат: 4px; } .Progresspercent { размер шрифта: 9pt; Цвет: #000000; высота: 15px; позиция: абсолютно; Z-Index: 20; Ширина: 100%; Текст-альбом: Центр; } .Progressbar { фоновый цвет:#91d65c; Ширина: 1px; высота: 15px; } </style> <div id = progress style = display: нет; class = progress> <div class = bar> <div id = progresspercent class = progresspercent> 0%</div> <div id = progressbar class = progressbar> </div> </div> <таблица границы = 0 сотока = 0 cellpadding = 2> <tr> <TD> CASTED </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 = левша> & nbsp; </td> </tr> </table> </div> |
Поделиться: краткий анализ ASP-Server.URLENCODE Обратная функция: urldeCode Если есть места, вместо этого используйте. Если есть другие символы, используйте %ASCII вместо этого. Если есть четыре байтовых символа, таких как китайские иероглифы, используйте вместо этого два %ASCII. Однако иногда нам также необходимо декодировать строку, которая была закодирована, но ASP не дает актуальности