แนะนำ: วิธีรับ ASP เพื่อรับที่อยู่ภาพแรกในรหัส ต่อไปนี้เป็นเนื้อหาอ้างอิง: 'แก้ไขรูปแบบอีกครั้ง' รหัสที่จะตรวจพบ 'http://www.knowsky.com/asp.asp'leixing html หรือ ubb'nopic ไม่มีรหัส
| ต่อไปนี้เป็นเนื้อหาที่ยกมา: ตัวอย่าง. <%@language = vbscript codepage = 65001%> <!-#รวมไฟล์ = sundyupload.asp-> - 'การเข้ารหัสเอกสารในตัวอย่างนี้คือ UTF-8 หากเป็นระบบที่มีการเข้ารหัสอื่น ๆ โปรดแปลงการเข้ารหัสเป็นการเข้ารหัสที่สอดคล้องกันมิฉะนั้นข้อมูลที่ได้รับในแบบฟอร์มอาจอ่านไม่ออก dim objupload, opt จุ่ม 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>) 'รับข้อมูลแบบฟอร์ม สำหรับแต่ละไฟล์ fileFormName ใน 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 (.) & / อัปโหลด / & ชื่อไฟล์ Response.write บันทึกที่: & server.mappath (.) & / อัปโหลด / & ชื่อไฟล์ & <br> <br> สิ้นสุดถ้า เคาน์เตอร์ = เคาน์เตอร์ 1 ต่อไป สิ้นสุดถ้า 'ระบุพา ธ เสมือนจริงสำหรับการอัปโหลดไฟล์ข้อมูลแถบความคืบหน้า (ไฟล์ XML) 'เป็นการดีกว่าที่จะสุ่มเพราะหลายคนอาจอัปโหลดในเวลาเดียวกันต้องใช้ข้อมูลความคืบหน้าแตกต่างกัน 'เส้นทางนี้จะต้องส่งผ่านไปยังองค์ประกอบการอัปโหลดระหว่างการส่งเพื่อเปลี่ยนข้อมูลความคืบหน้าในระหว่างกระบวนการอัปโหลด 'ไคลเอนต์ใช้ JavaScript เพื่ออ่านไฟล์ XML นี้และแสดงความคืบหน้า xmlpath = อัปโหลด/ & ตัวจับเวลา & .xml - <html> <head> <meta http-equiv = เนื้อหาประเภทเนื้อหา = text/html; charset = utf-8 /> <title> Sundy อัปโหลดความคืบหน้าแถบตัวอย่าง </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> <body> <form name = frmupload method = post action = example.asp enctype = multipart/form-data onsubmit = return chkfrm ()>> รูปแบบปกติ: <br> <ประเภทอินพุต = ชื่อข้อความ = ขนาดปกติ = 40> <br> <br> ไฟล์ 1: <br> <อินพุตประเภท = ชื่อไฟล์ = file1 size = 40> </br> <ประเภทอินพุต = ชื่อข้อความ = fileDesc1 size = 30> <br> <br> ไฟล์ 2: <br> <อินพุตประเภท = ชื่อไฟล์ = file2 size = 40> </br> <ประเภทอินพุต = ชื่อข้อความ = fileDesc2 size = 30> <br> ไฟล์ 3: <br> <อินพุตประเภท = ชื่อไฟล์ = file3 size = 40> </br> ไฟล์ 4: <br> <อินพุตประเภท = ชื่อไฟล์ = file4 size = 40> </br> ไฟล์ 5: <br> <อินพุตประเภท = ชื่อไฟล์ = file5 size = 40> </br> <ประเภทอินพุต = ส่งชื่อ = btnSubMit value = submit/> </form> </body> </html> sundyupload.asp <meta http-equiv = เนื้อหาประเภทเนื้อหา = text/html; charset = utf-8 /> - หรี่ คลาส 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) แล้ว ตั้งค่าไฟล์ = ใหม่ fileInfo อื่น ตั้งค่าไฟล์ = objfile (strfile) สิ้นสุดถ้า ฟังก์ชันสิ้นสุด 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 เวอร์ชัน = อัปโหลดความกว้างความคืบหน้าแถบเวอร์ชัน 1.0 ตั้งค่า objform = server.createObject (scripting.dictionary) ตั้งค่า objfile = server.createObject (scripting.dictionary) หาก request.totalbytes <1 จากนั้นออกจาก Sub SET TSTREAM = Server.CreateObject (ADODB.Stream) ตั้งค่า sundyupload_sourcedata = server.createObject (adodb.stream) SundyUpload_SourceData.type = 1 SundyUpload_sourcedata.mode = 3 sundyupload_sourcedata.open Totalbytes สลัว สลัว chunkreadsize datapart datapart, partyize สลัว objprogress TotalBytes = request.totalbytes 'ขนาดรวม chunkreadsize = 64 * 1024 'ขนาดบล็อก 64k bytesRead = 0 xmlpath = progressxmlpath charsetEncoding = charset ถ้า charsetEncoding = จากนั้น CharsetEncoding = UTF-8 สิ้นสุดถ้า ตั้งค่า objprogress = ความคืบหน้าใหม่ objprogress.progressinit (xmlpath) objprogress.updateProgress TotalBytes, 0 'วนลูปอ่าน ทำในขณะที่ bytesread <totalbytes 'บล็อกที่ถูกบล็อก partyize = chunkreadsize ถ้า partyize bytesread> totalBytes ดังนั้น partyize = totalBytes - bytesRead dataPart = request.binaryRead (partyize) bytesRead = bytesRead 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-formerstart 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 แล้ว ตั้งค่า file = ใหม่ 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, ประเภทเนื้อหา:, 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 = ไม่มีอะไร สิ้นสุดย่อย คลาสย่อย class_initialize สิ้นสุดย่อย คลาสย่อย class_terminate ถ้า request.totalbytes> 0 แล้ว objform.removeall objfile.removeall ตั้งค่า objform = ไม่มีอะไร ตั้งค่า objfile = ไม่มีอะไร sundyupload_sourcedata.close ตั้งค่า sundyUpload_sourcedata = ไม่มีอะไร สิ้นสุดถ้า ตั้งค่า objprogress = ไม่มีอะไร ตั้งค่า objfso = server.createObject (scripting.filesystemobject) ถ้า objfso.fileexists (xmlpath) แล้ว objfso.deletefile (xmlpath) สิ้นสุดถ้า ตั้งค่า objfso = ไม่มีอะไร สิ้นสุดย่อย ฟังก์ชั่นส่วนตัว getFilePath (เต็มไปด้วย pRATHATE) ถ้าเต็มไปด้วย <> getFilePath = ซ้าย (FullPath, Instrrev (FullPath,)) อื่น getFilePath = สิ้นสุดถ้า ฟังก์ชันสิ้นสุด ฟังก์ชั่นส่วนตัว getFilename (FullPath) ถ้าเต็มไปด้วย <> getFileName = mid (FullPath, Instrrev (FullPath, /) 1) อื่น getFilename = สิ้นสุดถ้า ฟังก์ชันสิ้นสุด ชั้นเรียนจบ คลาส fileinfo Dim Formname, ชื่อไฟล์, filepath, filesize, fileType, fileStart คลาสย่อย class_initialize ชื่อไฟล์ = filepath = filesize = 0 filestart = 0 formName = FileType = สิ้นสุดย่อย ฟังก์ชั่นสาธารณะ Saveas (FullPath) DM DR, ERRORSCHAR, I saveas = true 'Response.write FullPath & ............... <br> 'filename = ss.txt ถ้า TRIM (fullPath) = หรือ filestart = 0 หรือ filename = หรือขวา (fullPath, 1) =/ จากนั้นออกจากฟังก์ชัน '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 ตั้งค่า dr = ไม่มีอะไร saveas = false ฟังก์ชันสิ้นสุด ชั้นเรียนจบ ความคืบหน้าของชั้นเรียน dim objdom, xmlpath เวลาเริ่มต้นสลัว คลาสย่อย class_initialize สิ้นสุดย่อย ความคืบหน้าย่อยสาธารณะ (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 (อัพโหลดเปอร์เซ็นต์) 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 (lefttime) objchild.text = 00:00:00 objroot.appendchild objchild ตั้งค่า objpi = objdom.createProcessingInstruction (XML, เวอร์ชัน = '1.0' encoding = 'UTF-8') objdom.insertbefore objpi, objdom.childnodes (0) objdom.save xmlpath ตั้งค่า objpi = ไม่มีอะไร ตั้งค่า objchild = ไม่มีอะไร ตั้งค่า objroot = ไม่มีอะไร ตั้งค่า objdom = ไม่มีอะไร สิ้นสุดย่อย Sub UpdateProgress (TBYTES, RBYTES) Dim Etern ถ้า rbytes = 0 แล้ว startTime = ตัวจับเวลา ตั้งค่า objdom = server.createObject (microsoft.xmldom) objdom.load (xmlpath) objdom.selectsingLenode (// TotalBytes) .Text = TBYTES objdom.save (xmlpath) อื่น ความเร็ว = 0.0001 currenttime = ตัวจับเวลา Etime = currenttime - starttime ถ้า Etime> 0 แล้วความเร็ว = rbytes / Etime TotalTime = TBYTES/ความเร็ว lefttime = (tbytes - rbytes) / ความเร็ว เปอร์เซ็นต์ = รอบ (rbytes *100 / tbytes) 'objdom.selectsingLenode (// uploadbytes) .text = rbytes 'objdom.selectsingLenode (// uploadspeed) .Text = ความเร็ว 'objdom.selectsingLenode (// totaltime) .Text = TotalTime 'objdom.selectsingLenode (// lefttime) .Text = leftTime objdom.selectsingLenode (// uploadbytes) .text = formatfilesize (rbytes) &/& formatfilesize (tbytes) objdom.selectsingLenode (// uploadpercent) .Text = เปอร์เซ็นต์ objdom.selectsingLenode (// uploadspeed) .text = formatfilesize (ความเร็ว) &/วินาที objdom.selectsingLenode (// totaltime) .text = sectotime (TotalTime) objdom.selectsingLenode (// lefttime) .text = sectotime (lefttime) objdom.save (xmlpath) สิ้นสุดถ้า สิ้นสุดย่อย ฟังก์ชั่นส่วนตัว (วินาที) Dim H: H = 0 Dim M: M = 0 Dim S: S = 0 H = รอบ (วินาที/3600) M = Round ((Sec Mod 3600) / 60) S = Round (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/วิทยุ, 3) และ unittmp สิ้นสุดถ้า ฟังก์ชันสิ้นสุด คลาสย่อย class_terminate ตั้งค่า objdom = ไม่มีอะไร สิ้นสุดย่อย ชั้นเรียนจบ 'http://www.cuoxin.com/ - <ภาษาสคริปต์ = JavaScript> // เริ่มแถบความคืบหน้า ฟังก์ชั่น 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 = xmldoc.parseerror; การแจ้งเตือน (error.reason) settimeout (displayprogressbar ('xmlpath'), 1000); กลับ; - var root = xmldoc.documentelement; // รูทโหนด 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; ถ้า (เปอร์เซ็นต์ <100) { settimeout (displayprogressbar ('xmlpath'), 1000); - - ฟังก์ชั่น displayprogress () { var objprogress = document.getElementById (ความคืบหน้า); objprogress.style.display =; - ฟังก์ชั่น closeprogress () { var objprogress = document.getElementById (ความคืบหน้า); objprogress.style.display = ไม่มี; - ฟังก์ชั่น setProgressDivPos () { var objprogress = document.getElementById (ความคืบหน้า); objprogress.style.top = document.body.scrolltop (document.body.clientheight-ogument.getElementById (ความคืบหน้า). OffSetheight)/2 objprogress.style.left = document.body.scrollleft (document.body.clientwidth-document.getElementById (ความคืบหน้า) .offsetWidth)/2; - </script> <style type = text/css> .ความคืบหน้า { ตำแหน่ง: สัมบูรณ์; Padding: 4px; ด้านบน: 50; ซ้าย: 400; Font-Family: Verdana, Helvetica, Arial, Sans-Serif; ขนาดตัวอักษร: 12px; ความกว้าง: 250px; ความสูง: 100px; ความเป็นมา: #fffbd1; สี: #3D2C05; ชายแดน: 1px Solid #715208; / * กรรมสิทธิ์ Mozilla */ -moz-Border-Radius: 5px; /*-Moz-Procity: 0.95; - - . -Progress Table, .Progress TD { ขนาดฟอนต์: 9pt; - .บาร์{ ความกว้าง: 100%; ความสูง: 15px; พื้นหลังสี: #CCCCCC; ชายแดน: 1px ใส่เข้าไป #6666666; ขอบด้านล่าง: 4px; - .ProgressPercent { ขนาดฟอนต์: 9pt; สี: #000000; ความสูง: 15px; ตำแหน่ง: สัมบูรณ์; z-index: 20; ความกว้าง: 100%; TEXT-ALIGN: CENTER; - .ProgressBar { พื้นหลังสี:#91D65C; ความกว้าง: 1px; ความสูง: 15px; - </style> <div id = progress style = display: none; คลาส = ความคืบหน้า> <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> ตาม </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 = lefttime> & nbsp; </td> </tr> </table> </div> |
แบ่งปัน: การวิเคราะห์สั้น ๆ ของ ASP-Server.urlencode Inverse Function: UrldeCode หากมีช่องว่างให้ใช้แทน หากมีอักขระอื่นให้ใช้ %ascii แทน หากมีอักขระสี่ไบต์เช่นอักขระจีนให้ใช้ ASCII สอง %แทน อย่างไรก็ตามบางครั้งเราจำเป็นต้องถอดรหัสสตริงที่เข้ารหัส แต่ ASP ไม่ได้ให้ความเกี่ยวข้อง