권장 : ASP가 코드에서 첫 번째 이미지 주소를 얻는 방법 다음은 참조 된 내용입니다. '패턴을 다시 수정'코드가 감지 될 코드 'http://www.knowsky.com/asp.asp'Leixing html 또는 ubb'nopic 코드가 없습니다.
| 다음은 인용 된 내용입니다. 예제 .asp <%@language = vbscript CodePage = 65001%> <!-#include file = 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>) '양식 데이터를 얻으십시오 objupload.objfile의 각 fileformname에 대해 set objfile = objupload.objfile (fileformname) filesize = objfile.filesize strtemp = objfile.filepath Response.write strtemp filename = mid (strtemp, instrev (strtemp, /) 1) 파일 크기가> 0 인 경우 response.write (파일 크기 : & 파일 크기 & <br>) response.write (파일 이름 : & objfile.filepath & <br>) '응답 (파일 설명 : & objupload.form (filedesc & counter) & <br> <br>) objfile.saveas serv.mappath (.) 및 / upload / & filename 응답. 끝 If 카운터 = 카운터 1 다음 끝 If '진행률 바 데이터 파일을 업로드하기위한 가상 경로 지정 (XML 파일) '여러 사람이 동시에 업로드 할 수 있으므로 다른 진행 상황 데이터가 필요하기 때문에'무작위가되는 것이 좋습니다. '이 경로는 업로드 프로세스 중에 진행 데이터를 변경하기 위해 제출 중 업로드 구성 요소로 전달되어야합니다. '클라이언트는 JavaScript를 사용 하여이 XML 파일을 읽고 진행 상황을 표시합니다. xmlpath = 업로드/ & 타이머 & .xml %> <html> <헤드> <meta http-equiv = content-type content = 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%>'); // Progress Bar를 시작합니다 진실을 반환하십시오. } </스크립트> </head> <body> <양식 이름 = frmupload method = post action = example.asp enctype = multipart/form-data onsubmit = return chkfrm ()> 정상 양식 : <br> <입력 유형 = 텍스트 이름 = normalform size = 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 값 = 제출/> </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) 끝 If 엔드 기능 공개 기능 파일 (strfile) strfile = lcase (strfile) objfile.exists (strfile)가 아니라면 file = new FileInfo를 설정합니다 또 다른 set file = objfile (strfile) 끝 If 엔드 기능 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 set objform = server.createobject (scripting.dictionary) set objfile = server.createobject (scripting.dictionary) request.totalBytes <1 인 경우 서브를 종료하십시오 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 Dim Datapart, Partize 희미한 objprogress TotalBytes = request.totalBytes의 총 크기 ChunkReadsize = 64 * 1024 '블록 크기 64K 바이트 레드 = 0 xmlpath = ProgressXmlPath charsetencoding = charset charSetEncoding =이면 그렇다면 charsetencoding = utf-8 끝 If objprogress = 새로운 진행 상황을 설정하십시오 objprogress.progressinit (xmlpath) objprogress.updateprogress TotalBytes, 0 '루프 청크 독서 바이트를 읽는 동안 <TotalBytes '차단 된 읽기 partize = chunkreadsize Partize BytesRead> TotalBytes가 Partize = TotalBytes -BytesRead DataPart = request.binaryread (partize) BYTESREAD = BYTESREAD PARTIZE 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 while (iformstart 10) <iformend iinfoend = instrb (ifortstart, requestData, crlf & crlf) 3 tstream.type = 1 tstream.mode = 3 tstream.open sundyupload_sourcedata.position = ifortstart sundyupload_sourcedata.copyto tstream, iinfoend-imperstart tstream.position = 0 tstream.type = 2 tstream.charset = charsetencoding sinfo = tstream.readtext tstream.close '양식 프로젝트 이름을 얻으십시오 iformstart = instrb (iinfoend, requestData, sstart) ifindstart = inst (22, sinfo, name =, 1) 6 ifindend = instr (ifindstart, sinfo ,, 1) sformname = lcase (mid (sinfo, ifindstart, ifindend-ifindstart)))) '파일이라면 악기 (45, sinfo, filename =, 1)> 0이면 thefile = new FileInfo를 설정하십시오 '파일 이름을 얻으십시오 ifindstart = inst (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 = inst (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 끝 If 또 다른 '양식 프로젝트라면 tstream.type = 1 tstream.mode = 3 tstream.open sundyupload_sourcedata.position = iinfoend sundyupload_sourcedata.copyto tstream, ifortstart-iinfoend-3 tstream.position = 0 tstream.type = 2 tstream.charset = charsetencoding sformvalue = tstream.readtext tstream.close objform.exists (sformname) 인 경우 ovjform (sformname) = objform (sformname) &, & sformvalue 또 다른 objform.add sformname, sformvalue 끝 If 끝 If iformstart = iformstart istart 1 향하게 하다 requestData = tstream = 아무것도 설정하지 않습니다 종료 서브 private sub class_initialize 종료 서브 개인 sub class_terminate request.totalBytes> 0 인 경우 objform.removeall objfile.removeall objform = 아무것도 설정하지 않습니다 objfile = 아무것도 설정하지 않습니다 sundyupload_sourcedata.close sundyupload_sourcedata = 아무것도 설정하지 않습니다 끝 If objprogress = nothing을 설정하십시오 set objfso = server.createobject (scripting.filesystemobject) if objfso.fileExists (xmlpath)라면 objfso.deletefile (xmlpath) 끝 If OBJFSO = 아무것도 설정하지 않습니다 종료 서브 개인 기능 getFilePath (fullPath) FullPath <>라면 getFilePath = 왼쪽 (FullPath, Instrev (FullPath,)) 또 다른 getFilePath = 끝 If 엔드 기능 개인 기능 getFileName (fullPath) FullPath <>라면 getfilename = mid (fullpath, instrev (fullpath, /) 1) 또 다른 getFilename = 끝 If 엔드 기능 수업 종료 클래스 파일 인포 Dim FormName, Filename, FilePath, Filesize, Filetype, Filestart private sub class_initialize filename = filepath = 파일 크기 = 0 filestart = 0 formname = filetype = 종료 서브 공개 기능 저장소 (fullpath) Dim Dr, Errorchar, i Saveas = True '응답. FullPath & ............... <br> 'filename = ss.txt if trim (fullPath) = 또는 filestart = 0 또는 filename = 또는 오른쪽 (fullPath, 1) =/ 그런 다음 종료 함수 '응답. 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 Ovjdom, xmlpath 희미한 시작 시간 private sub class_initialize 종료 서브 Public Sub ProgressInit (xmlpathtmp) 희미한 objroot, objchild 희미한 objpi xmlpath = xmlpathtmp set ovjdom = server.createobject (microsoft.xmldom) set objroot = objdom.createElement (진행) ovjdom.appendChild objroot set objchild = objdom.createElement (TotalBytes) objchild.text = 0 objroot. AppendChild objchild set objchild = objdom.createElement (업로드 비트) objchild.text = 0 objroot. AppendChild objchild set objchild = ovjdom.createElement (업로드 퍼센트) objchild.text = 0% objroot. AppendChild objchild set objchild = objdom.createElement (업로드 스피드) objchild.text = 0 objroot. AppendChild objchild set objchild = objdom.createElement (TotalTime) objchild.text = 00:00:00 objroot. AppendChild objchild set objchild = objdom.createElement (왼쪽) objchild.text = 00:00:00 objroot. AppendChild objchild set objpi = objdom.createprocessinginstruction (xml, version = '1.0'encoding = 'utf-8') ovjdom.insertbefore objpi, ovjdom.childnodes (0) ovjdom.save xmlpath OBJPI = 아무것도 설정하지 않습니다 objchild = 아무것도 설정하지 않습니다 objroot = 아무것도 설정하지 않습니다 ovjdom = 아무것도 설정하지 않습니다 종료 서브 하위 업데이트 프로그램 (Tbytes, rbytes) Dim Etime, 현재 시간, 속도, 총 시간, 왼쪽 시간, 백분율 rbytes = 0이면 STARTTIME = 타이머 set ovjdom = server.createobject (microsoft.xmldom) ovjdom.load (xmlpath) ovjdom.selectsinglenode (// totalbytes) .text = tbytes ovjdom.save (xmlpath) 또 다른 속도 = 0.0001 현재 시간 = 타이머 etime = currenttime -starttime etime> 0이면 속도 = rbytes / etime입니다 Totaltime = tbytes/speed 왼쪽 시간 = (tbytes -rbytes) / 속도 백분율 = 라운드 (rbytes *100 / tbytes) 'ovjdom.selectsinglenode (// uploadBytes) .text = rbytes 'ovjdom.selectsinglenode (// uploadspeed) .text = 속도 'ovjdom.selectsinglenode (// totaltime) .text = totaltime 'ovjdom.selectsinglenode (// 왼쪽) .text = 왼쪽 시간입니다 ovjdom.selectsinglenode (// uploadBytes) .text = formatfilesize (rbytes) &/& formatfilesize (tbytes) ovjdom.selectsinglenode (// uploadpercent) .text = % ovjdom.selectsinglenode (// uploadspeed) .text = formatfilesize (속도) &/sec ovjdom.selectsinglenode (// totaltime) .text = sectotime (Totaltime) ovjdom.selectsinglenode (// 왼쪽) .text = sectotime (왼쪽) ovjdom.save (xmlpath) 끝 If 종료 서브 개인 기능 SECTOTIME (SEC) Dim H : H = 0 Dim M : M = 0 Dim S : S = 0 H = 라운드 (SEC/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) 엔드 기능 개인 기능 형식 파일 크기 (fsize) Dim Radio, K, M, G, UnitTMP K = 1024 M = 1024*1024 g = 1024*1024*1024 라디오 = 1 Fix (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 끝 If 라디오 = 1 인 경우 formatfilesize = fsize & & nbsp; & unittmp 또 다른 formatfilesize = formatnumber (fsize/radio, 3) & unittmp 끝 If 엔드 기능 개인 sub class_terminate ovjdom = 아무것도 설정하지 않습니다 종료 서브 수업 종료 'http://www.cuoxin.com/ %> <스크립트 언어 = javaScript> // Progress Bar를 시작합니다 함수 startProgress (xmlpath) { displayProgress (); setProgressDivpos (); settimeout (displayProgressBar ( 'XmlPath'), 500); } 함수 displayProgressBar (xmlpath) { var xmldoc = new ActiveXobject (msxml2.document.3.0); xmldoc.async = false; xmldoc.load (xmlpath); if (xmldoc.parseerror.errorcode! = 0) { var error = 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; if ( % <100) { settimeout (displayProgressBar ( 'xmlpath'), 1000); } } 함수 displayProgress () { var objprogress = document.getElementById (Progress); objprogress.style.display =; } 함수 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 = docum } </스크립트> <스타일 유형 = 텍스트/CSS> .진전 { 위치 : 절대; 패딩 : 4px; 상단 : 50; 왼쪽 : 400; Font-Family : Verdana, Helvetica, Arial, Sans-serif; 글꼴 크기 : 12px; 너비 : 250px; 높이 : 100px; 배경 : #fffbd1; 색상 : #3D2C05; 국경 : 1px Solid #715208; / * Mozilla 독점 */ -Moz 국경 Radius : 5px; /*-Moz-opacity : 0.95; */ } .Progress 테이블, .Progress TD { 글꼴 크기 : 9pt; } .술집{ 너비 : 100%; 높이 : 15px; 배경색 : #CCCCCC; 테두리 : 1px 삽입 #666666; 마진 바닥 : 4px; } .progresspercent { 글꼴 크기 : 9pt; 색상 : #000000; 높이 : 15px; 위치 : 절대; z- 안수 : 20; 너비 : 100%; 텍스트 정렬 : 센터; } .progressbar { 배경색 :#91D65C; 너비 : 1px; 높이 : 15px; } </스타일> <div id = 진행 스타일 = 디스플레이 : 없음; 클래스 = 진행> <div class = bar> <div id = progresspercent class = progresspercent> 0%</div> <div id = progressbar class = progressbar> </div> </div> <테이블 테두리 = 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> </테이블> </div> |
공유 : asp-server.urlencode 역 함수의 간단한 분석 : urldecode 공간이있는 경우 대신 사용하십시오. 다른 문자가있는 경우 대신 %ASCII를 사용하십시오. 한자와 같은 4 바이트 문자가있는 경우 대신 2 %ASCII를 사용하십시오. 그러나 때로는 인코딩 된 문자열을 해독해야하지만 ASP는 관련성을 제공하지 않습니다.