스캔.inc
<%
'설명: 응용 프로그램 클래스를 처음 작성하는데 부적절한 부분이 있으면 알려주세요! QQ: 1168064
'속성과 메서드
'1. ScanType: 스캔 유형입니다. 기본값: 1. 값: 0은 파일 및 데이터베이스를 검사하고, 1은 파일을 검사하고, 2는 데이터베이스를 검사합니다.
'2. Conn, Table, ColImg, ColID: 데이터베이스를 스캔할 때 각각 연결 문자열, 테이블 이름, 그림 열 이름, 그림에 해당하는 ID 열 이름을 사용합니다.
'3. 목록: 표시 유형. 기본값: 0. 값: 0 잘못된 사진 1 네트워크 사진 2 유효한 사진 3 모두
'4. ScanText: 스캔된 이미지 유형. 기본값: Asp/html/htm. 값: 파일 확장자이며 "/"로 구분됩니다.
'5. 경로: 스캔 경로: 기본값은 웹사이트 루트 디렉터리입니다. 상대 경로를 사용하세요. 예를 들어 "/dsj"
'6.스캔(): 메소드. 설정에 따라 스캔
'7. 파일: 스캔한 모든 정보를 저장합니다. Scan() 메서드 다음에 호출됩니다.
'8. 폴더: 검색된 폴더 수
'9.파일: 검사된 파일 수입니다.
'10. TotalSize: 디렉토리의 전체 크기입니다. G, M, B가 자동으로 표시됩니다.
'11. 이미지 : 스캔된 파일의 사진 개수
'12. 존재: 실패 횟수
'13. DbImg: 데이터베이스의 사진 수
'14. TotalImg: 스캔한 사진 수
'15. RunTime: 스캔 프로세스의 시간입니다. 단위 밀리초
'16. 파일 사용에 관하여:
' ObjName.file의 각 Fn에 대해 ...... 다음
'Fn.FileName: 경로를 포함한 사진 이름
' Fn.Belong: 사진이 있는 파일 또는 데이터베이스(파일은 "|"로 구분됨)
'Fn.Exists: 유효한지 여부입니다. 0은 유효하지 않음을 의미하고, 1은 유효함을 의미하며, 1은 비로컬 경로를 의미하며 판단할 수 없음을 의미합니다.
옵션 명시적
클래스MCScanImg
희미한 파일,ScanType,Conn,테이블,ColId,ColImg,FSO,경로,목록,ScanText,Spath,버전
희미한 폴더, 파일, TotalSize, 이미지, 존재, sFiles, 시작, EndT, 런타임, DbImg, TotalImg, 필터
비공개 하위 클래스_초기화
파일 설정 = Server.Createobject("Scripting.Dictionary")
FSO = CreateObject("Scripting.FileSystemObject") 설정
스캔 유형=1
콘=""
테이블=""
ColImg=""
ColID=""
경로="/"
sPath = 서버.맵패스("/")
목록=0
ScanText="asp/htm/html"
폴더=0
파일=0
전체 크기=0
이미지=0
DBImg=0
존재=0
s파일=0
총Img=0
시작=타이머
Endt=타이머
런타임=0
Filter="src=(.[^>^&]*)(.gif|.jpg)"
버전="1.00"
End Sub
Private Sub Class_Terminate
파일 설정=없음
FSO = 없음 설정
End Sub
Public Function Scan() '스캔 시작
left(path,1)="/"인 경우
path=Spath&Replace(경로,"/","")
또 다른
경로=Spath&""&바꾸기(경로,"/","")
종료하면
ScanType=1이면
스캔파일(경로)
ElseIf ScanType=2 그러면
스캔DB()
또 다른
스캔파일(경로)
스캔DB()
종료 조건
EndT=타이머
런타임=FormatNumber(EndT-Start)*1000
전체 크기=shb(전체 크기)
TotalImg=DbImg+이미지
End Function
Private Sub ScanDB() '데이터베이스를 스캔합니다. 여기의 경로는 결정하기 어렵습니다. InsDb에서 변경하십시오(AddNum=0인 경우).
희미한 Rs,RetStr,ReBel,SQL
SQL=""&ColID&","&ColIMG&" "&Table&"에서 "&ColID&" DESC로 주문"
'오류 발생 시 다음 재개
Conn ="" OR Table="" OR ColID="" OR ColIMG = ""인 경우
하위 종료
또 다른
Rs = Server.CreateObject("ADODB.RecordSet") 설정
Rs.Open SQL,conn,3,3
Rs.EOF가 아닌 경우
RetStr=Rs(1)
ReBel="&ColImg&" 테이블 "&Table&"(ID: "&Rs(0)&")"의 열
InsDb RetStr,ReBel,0,""
Rs.MoveNext
향하게 하다
Rs.Close
Rs=아무것도 설정하지 않음
종료 조건
End Sub
Private Sub ScanFile(PathStr) '파일을 스캔합니다. 재귀
희미한 f,ff,fn,fd,fdn,RealPath,fr,fc
'Response.write PathStr&"<br>"
ff = fso.getfolder(pathstr) 설정
f = ff.files로 설정
fd = ff.subfolders 설정
f.Count >0이면
각 fn에 대해 f
파일=파일+1
전체 크기=전체 크기+fn.크기
ChkFileName(fn.Name)이면
sFiles=sFiles+1
If Right(PathStr,1) <> "" 그러면
RealPath=PathStr&""&fn.이름
또 다른
RealPath=PathStr(&fn.이름)
종료 조건
fr = FSO.OpenTextFile(RealPath,1) 설정
fc=fr.모두읽기
'response.write RealPath&"<br>"
RegExpTest 필터,fc,RealPath
종료 조건
다음
종료 If
If fd.Count> 0 Then
fd의 각 fdn에 대해
폴더=폴더+1
희미한 온도
맞다면 (PathStr,1) <> "" 다음
temp=PathStr&""&fdn.이름
또 다른
temp=PathStr&fdn.Name
종료하면
파일 스캔(임시)
다음
종료 조건
End Sub
Private Sub RegExpTest(Patrn, Strng,PathStr) '사진 찾기
Dim RegEx, 일치, 일치, Chk, ReImg, RetStr, ReBel, TheFile
RegEx = 새 RegExp 설정
RegEx.Pattern = 패턴
RegEx.IgnoreCase = 참
RegEx.Global = 참
일치 항목 설정 = RegEx.Execute(Strng)
경기의 각 경기에 대해
RetStr = 바꾸기(Match.Value,"src=","")
RetStr = 바꾸기(RetStr,"'","")
RetStr = 바꾸기(RetStr,"""","")
체크 = 0
ReBel=GetFn(경로 길이)
InsDb RetStr,ReBel,1,PathStr
다음
End Sub
Private Function GetExt(FullPath) '검사된 파일 형식인지 확인하는 데 사용되는 파일 확장자를 가져옵니다.
희미한 온도
FullPath <> ""인 경우
온도 = Mid(FullPath,InStrRev(FullPath, "")+1)
InStr(Temp,".")>0이면
GetExt=Mid(온도,InStrRev(온도, ".")+1)
또 다른
GetExt=임시
종료 조건
또 다른
GetExt = ""
종료 조건
End Function
Private Function ChkFileName(Str) '파일이 검사할 파일 형식인지 감지합니다.
딤 아르,이,fn
fn=GetExt(str)
ar=분할(ScanText,"/")
ChkFileName=거짓
i=0인 경우 ubound(ar)로
lCase(fn) =lCase(Trim(ar(i)))이면
ChkFileName=참
종료 기능
종료 조건
다음
End Function
Private Function shb(n) '바이트 수를 표시합니다.
n<1024이면
shb = n&"바이트"
ElseIf n>1024 및 n<1024*1024 그러면
shb = 형식 번호(n/1024,2)&"K"
ElseIf n>=1024*1024 and n <1024*1024*1024 그러면
shb = 형식번호(n/(1024*1024),2)&"M"
또 다른
shb =formatnumber(n/(1024*1024*1024),2)&"G"
종료 조건
End Function
Private Sub InsDb(RetStr,ReBel,AddNum,PathStr) '그림이 유효한지 분석하여 사전 객체에 추가합니다.
희미한 chk,ReImg,TheFile
InStr(RetStr," http://")>0 OR Instr(RetStr," ftp://")>0 그러면
ReImg=RetStr
척=-1
또 다른
RetStr = 바꾸기(RetStr,"/","")
If (Left(RetStr,1) = "" ) 그러면
RetStr=SPath&Retstr
ElseIf Left(RetStr,3) = ".." 그러면
희미한 온도
임시=GetPath(PathStr)
Do Until Left(RetStr,3) <> ".." '상대 경로 처리
임시=Fso.GetParentFolderName(임시)
RetStr=Mid(RetStr,4,len(RetStr)-3)
고리
RetStr=온도&""&RetStr
또 다른
AddNum=0이면
left(RetStr,1)=""인 경우
RetStr=경로&""재검색(&R)
또 다른
RetStr=경로(&Retstr)
종료 조건
또 다른
RetStr=getpath(경로 문자열)&RetStr
IF 종료
End If
If FSO.FileExists(RetStr) Then
척=1
종료 조건
ReImg=GetFn(RetStr)
종료 조건
Chk=0이면
존재=존재+1
다음과 같은 경우 종료
File.Exists(ReImg)인 경우
TheFile=File.Item(ReImg) 설정
TheFile.Belong <> ReBel이면
TheFile.Belong=TheFile.Belong&"|"반군(&R)
종료 조건
또 다른
If (List=0 AND Chk =0) OR (List=1 And Chk=-1) Or (List=2 And Chk=1 ) Or List=3 Then
TheFile= 새 FileInfo 설정
TheFile.FileName=ReImg
TheFile.Belong=ReBel
TheFile.Exists=확인
파일.ReImg 추가,TheFile
케이스 스캔 유형 선택
사례 1 이미지=이미지+1
사례 2 DbImg = DbImg+1
그렇지 않은 경우
AddNum = 0이면
DbImg = DbImg+1
또 다른
이미지=이미지+1
종료 조건
선택 종료
종료 조건
종료 조건
End Sub
Private Function GetPath(Str) '파일 경로 가져오기
'response.write str&"<br>"
희미한 온도,EndB
Temp=바꾸기(Str,"/","")
EndB=InstrRev(임시,"")
EndB = 0이면
GetPath=SPath
또 다른
GetPath=왼쪽(온도,EndB)
종료 조건
'response.write GetPath&"<BR>"
End Function
Private Function GetFn(Str) '파일의 상대 경로 이름을 가져옵니다.
희미한 온도
온도=Str
'응답.임시 쓰기&"<br>"
Temp=바꾸기(Str,SPath,"")
임시=바꾸기(임시,"","/")
GetFn=온도
끝 함수
끝 클래스
클래스 FileInfo
Dim FileName,Belong,Exists
Private Sub Class_Initialize
파일이름=""
소속=""
존재합니다=""
End sub
End Class
%>
적용 사례
< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd ">
<%
%>
<html>
<머리>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>제목 없는 문서</title>
<link rel="stylesheet" href="css.css">
</head>
<본문>
<form name="form1" method="post" action="scan.asp">
<table width="60%" border="0" align="center" cellpacing="1" bgcolor="#003366">
<tr bgcolor="#FFFFFF">
<td height="30" colspan="2" bgcolor="#00CCFF"><div align="center">사진 스캔</div></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="26%" height="20"><div align="right">스캔 폴더:</div></td>
<td width="74%" height="20"><select name="Path" id="경로">
<옵션 값="/">/</옵션>
<%
희미한 fso,f,fd,p
p=서버.MapPath("/")
fso=Server.CreateObject("Scripting.FileSystemObject")를 설정합니다.
함수 표시 경로(str)
f=fso.getfolder(str) 설정
fd=f.subfolders 설정
fd의 각 fd에 대해
Response.Write "<option value="&Replace(Replace(fds,p,""),"","/")&">"&Replace(Replace(fds,p,""),""," /")&"</option>"
ff=fso.getfolder(fds) 설정
ffd=ff.subfolders 설정
ffd.count>0이면
표시 경로(fds)
종료하면
다음
함수 종료
표시경로(p)%>
</select></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">스캔 유형: </div></td>
<td height="20"><input type="radio" name="SType" value="0">
모두
<input name="SType" type="radio" value="1" 확인됨>
파일 스캔
<input type="radio" name="SType" value="2">
데이터베이스 스캔</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">디스플레이 유형:</div></td>
<td height="20"><input name="LType" type="radio" value="0" 확인됨>
유효하지 않은
<input type="radio" name="LType" value="1">
네트워크 경로
<input type="radio" name="LType" value="2">
효율적인
<input type="radio" name="LType" value="3">
모두</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">파일 형식: </div></td>
<td height="20"><input name="Ext" type="checkbox" id="Ext" value="asp" 확인됨>
ASP
<입력 이름="Ext" type="checkbox" id="Ext" value="htm" 확인됨>
HTML
<입력 이름="Ext" type="checkbox" id="Ext" value="html" 확인됨>
HTML
<입력 이름="Ext" type="checkbox" id="Ext" value="inc" 확인됨>
Inc</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">데이터베이스:</div></td>
<td height="20">테이블:
<input name="Tab" type="text" id="Tab" size="5" class="allinput">
이미지 ID 열:
<input name="ColID" type="text" id="ColID" size="5" class="allinput">
이미지 경로 열:
<input name="ColImg" type="text" id="ColImg" size="5" class="allinput"> </td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="40" colspan="2"><div align="center">
<input type="submit" value="스캔 시작" class="alinput">
</div></td>
</tr>
</table>
</form>
</body>
</html>
스캔.asp
<!--#include 파일="scan.inc"-->
<%
희미한 MCS,FN,FB
%>
<link href="css.css" rel="스타일시트">
<table width="70%" border="0" align="center" cellpadding="5" cellpacing="1" bgcolor="#003366">
<tr bgcolor="#AAAAFF">
<td width="30%" height="30">사진 이름</td>
<td width="39%" height="30">위치</td>
<td width="31%" height="30">유효</td>
</tr>
<%
함수 GetVar(ID,기본값)
GetVar = 기본값
요청(ID) <> ""인 경우
GetVar = 요청(ID)
IF 종료
기능 종료
희미한 SType,LType,경로,Ext,Conn,Tab,ColID,ColImg
SType=GetVar("S유형",1)
LType=GetVar("LType",3)
경로=GetVar("경로","/")
Ext = Trim(Replace(GetVar("Ext","htm,html,asp,inc"),", ","/"))
Conn=GetVar("콘","")
Tab=GetVar("탭","")
ColID=GetVar("ColID","")
ColImg=GetVar("ColImg","")
Conn="공급자=Microsoft.Jet.OLEDB.4.0;데이터 소스="&Server.MapPath("/db1.mdb")
mcs= 새 mcscanimg 설정
mcs.ScanType=SType
mcs.list=LType
mcs.ScanText=내선
mcs.conn=콘
mcs.Path=경로
mcs.table=탭
mcs.ColID=ColID
mcs.ColImg=ColImg
mcs.스캔()
mcs.file의 각 fn에 대해
fb=mcs.file(fn) 설정
%>
<tr bgcolor="#FFFFFF">
<td valign="top"><%=fb.filename%></td>
<td><%=바꾸기(fb.Belong,"|","<br>")%></td>
<td><%
fb.Exists=1이면
response.Write "유효한 경로"
elseif fb.exists=0이면
response.Write "잘못된 경로"
또 다른
response.Write "비로컬 경로"
종료하면
%></td>
</tr>
<%
다음
%>
<tr bgcolor="#FFFFFF">
<td colspan="3">전체 스캔 파일: <%=mcs.files%>; 스캔 폴더: <%=mcs.folders%>; 전체 크기: <%=mcs.totalsize%><br>스캔 사진 수 : <%=mcs.images&"; 데이터베이스 이미지 수: "&mcs.dbimg&"; 총 이미지 수: "&mcs.TotalImg%>; 실패 수: <%=mcs.exists%><br>실행 시간: <%=mcs.runtime%>밀리초</td>
</tr>
</table>
<%set mcs=아무것도%>