สแกน.อิงค์
-
'คำอธิบาย: นี่เป็นครั้งแรกของฉันในการเขียนคลาสการสมัคร หากมีสิ่งใดที่ไม่เหมาะสม โปรดบอกฉัน! ถาม: 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. เกี่ยวกับการใช้ไฟล์:
' สำหรับแต่ละ Fn ใน ObjName.file …… ถัดไป
'Fn.FileName: ชื่อรูปภาพ รวมถึงเส้นทาง
' Fn.Belong: ไฟล์หรือฐานข้อมูลที่มีรูปภาพอยู่ (ไฟล์จะถูกคั่นด้วย "|")
'Fn.Exists: ไม่ว่าจะถูกต้องหรือไม่ 0 หมายถึงไม่ถูกต้อง 1 หมายถึงถูกต้อง - 1 หมายถึงเส้นทางที่ไม่ใช่ท้องถิ่นและไม่สามารถตัดสินได้
ตัวเลือกที่ชัดเจน
คลาส MCScanImg
ไฟล์สลัว, ScanType, Conn, ตาราง, ColId, ColImg, FSO, เส้นทาง, รายการ, ScanText, Spath, เวอร์ชัน
โฟลเดอร์สลัว, ไฟล์, ขนาดรวม, รูปภาพ, มีอยู่, sFiles, เริ่ม, EndT, RunTime, DbImg, TotalImg, ตัวกรอง
คลาสย่อยส่วนตัว_เริ่มต้น
ตั้งค่าไฟล์ = Server.Createobject("Scripting.Dictionary")
ตั้งค่า FSO = CreateObject("Scripting.FileSystemObject")
ประเภทการสแกน=1
คอนน์ = ""
ตาราง = ""
ColImg=""
รหัสประจำตัว = ""
เส้นทาง = "/"
sPath = Server.MapPath("/")
รายการ=0
ScanText="asp/htm/html"
โฟลเดอร์=0
ไฟล์=0
ขนาดรวม=0
รูปภาพ=0
DbImg=0
มีอยู่=0
sFiles=0
รวมอิมเมจ=0
เริ่ม=ตัวจับเวลา
สิ้นสุด=ตัวจับเวลา
รันไทม์=0
ตัวกรอง = "src=(.[^>^&]*)(.gif|.jpg)"
รุ่น = "1.00"
สิ้นสุด
คลาสย่อยส่วนตัวย่อย_ยุติ
ตั้งค่าไฟล์ = ไม่มีอะไร
ตั้งค่า FSO = ไม่มีเลย
สิ้นสุด
การสแกนฟังก์ชั่นสาธารณะย่อย () 'เริ่มการสแกน
ถ้า left(path,1)="/" แล้ว
path=สปาย&แทนที่(พาธ,"/", "")
อื่น
Path=Spath&""&Replace(path,"/", "")
สิ้นสุดถ้า
ถ้า ScanType=1 แล้ว
Scanfile(เส้นทาง)
ElseIf ScanType=2 แล้ว
สแกนดีบี()
อื่น
สแกนไฟล์(เส้นทาง)
สแกนดีบี()
สิ้นสุดถ้า
EndT=ตัวจับเวลา
RunTime=FormatNumber(EndT-Start)*1000
TotalSize=shb(ขนาดรวม)
TotalImg=DbImg+รูปภาพ
End Function
Private Sub ScanDB() 'สแกนฐานข้อมูล เส้นทางนี้ระบุได้ยาก โปรดเปลี่ยนใน InsDb (หลังจาก If AddNum=0)
หรี่ Rs, RetStr, ReBel, SQL
SQL="เลือก "&ColID&",&ColIMG&" จาก "&Table&" เรียงลำดับตาม "&ColID&" DESC"
'เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป'
ถ้า Conn ="" หรือ Table="" หรือ ColID="" หรือ 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,""
฿MoveNext
เวนด์
฿ปิด
ตั้งค่า Rs=ไม่มีอะไร
สิ้นสุดถ้า
สิ้นสุด Sub 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.โฟลเดอร์ย่อย
ถ้า f.Count >0 แล้ว
สำหรับแต่ละ fn ใน f
ไฟล์=ไฟล์+1
TotalSize=ขนาดรวม+fn.Size
ถ้า ChkFileName(fn.Name) แล้ว
sFiles=sFiles+1
ถ้า Right(PathStr,1) <> "" จากนั้น
RealPath=PathStr&""&fn.Name
อื่น
RealPath=PathStr&fn.ชื่อ
สิ้นสุดถ้า
ตั้ง fr = FSO.OpenTextFile(RealPath,1)
fc=fr.อ่านทั้งหมด
'response.write RealPath&"<br>"
ตัวกรอง RegExpTest, เอฟซี, RealPath
สิ้นสุดถ้า
ต่อไป
สิ้นสุดถ้า
ถ้า fd.Count> 0 จากนั้น
สำหรับแต่ละ fdn ใน fd
โฟลเดอร์=โฟลเดอร์+1
อุณหภูมิสลัว
ถ้าใช่ (PathStr,1) <> "" แล้ว
temp=PathStr&""&fdn.Name
อื่น
temp=PathStr&fdn.Name
สิ้นสุดถ้า
สแกนไฟล์(ชั่วคราว)
ต่อไป
สิ้นสุดถ้า
สิ้นสุด 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
กบฎ=GetFn(PathStr)
InsDb RetStr,ReBel,1,PathStr
ต่อไป
End Sub
Private Function GetExt(FullPath) 'รับนามสกุลไฟล์ ใช้เพื่อพิจารณาว่าเป็นประเภทไฟล์ที่สแกนหรือไม่
อุณหภูมิสลัว
ถ้า FullPath <> "" แล้ว
อุณหภูมิ = กลาง(FullPath,InStrRev(FullPath, "")+1)
ถ้า InStr(Temp,".")>0 แล้ว
GetExt=Mid(ชั่วคราว,InStrRev(ชั่วคราว, ".")+1)
อื่น
GetExt=อุณหภูมิ
สิ้นสุดถ้า
อื่น
รับExt = ""
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่นส่วนตัว ChkFileName(Str) 'ตรวจสอบว่าไฟล์เป็นประเภทไฟล์ที่จะสแกนหรือไม่
ติ่ม ar, i, fn
fn=GetExt(str)
ar=Split(ScanText,"/")
ChkFileName=เท็จ
สำหรับ i=0 ถึง ubound(ar)
ถ้า lCase(fn) =lCase(Trim(ar(i))) จากนั้น
ChkFileName=จริง
ออกจากฟังก์ชัน
สิ้นสุดถ้า
ต่อไป
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่นส่วนตัว shb(n) 'แสดงจำนวนไบต์
ถ้า n<1024 แล้ว
shb = n&"ไบต์"
ElseIf n>1024 และ n<1024*1024 จากนั้น
shb = formatnumber(n/1024,2)&"K"
ElseIf n>=1024*1024 และ n <1024*1024*1024 จากนั้น
shb = formatnumber(n/(1024*1024),2)&"M"
อื่น
shb =formatnumber(n/(1024*1024*1024),2)&"G"
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
ส่วนตัว Sub InsDb (RetStr, ReBel, AddNum, PathStr) 'วิเคราะห์ว่ารูปภาพนั้นถูกต้องหรือไม่และเพิ่มลงในวัตถุพจนานุกรม
chk สลัว, ReImg, TheFile
ถ้า InStr(RetStr," http://")>0 หรือ Instr(RetStr," ftp://")>0 จากนั้น
ReImg=RetStr
ชเค=-1
อื่น
RetStr = แทนที่(RetStr,"/", "")
ถ้า (Left(RetStr,1) = "" ) แล้ว
RetStr=SPath&Retstr
ElseIf Left(RetStr,3) = ".." จากนั้น
อุณหภูมิสลัว
อุณหภูมิ=GetPath(PathStr)
Do Until Left(RetStr,3) <> ".." 'จัดการเส้นทางสัมพัทธ์
Temp=Fso.GetParentFolderName(ชั่วคราว)
RetStr=กลาง(RetStr,4,เลน(RetStr)-3)
วนซ้ำ
RetStr=อุณหภูมิ&""&RetStr
อื่น
ถ้า AddNum=0 แล้ว
ถ้า left(RetStr,1)="" แล้ว
RetStr=เส้นทาง&""&Retstr
อื่น
RetStr=เส้นทาง&Retstr
สิ้นสุดถ้า
อื่น
RetStr=getpath(Pathstr)&RetStr
สิ้นสุด ถ้า
สิ้นสุดถ้า
ถ้า FSO.FileExists (RetStr) แล้ว
ชค=1
สิ้นสุดถ้า
ReImg=GetFn(RetStr)
สิ้นสุดถ้า
ถ้า Chk=0 แล้ว
มีอยู่=มีอยู่+1
จบถ้า
ถ้า File.Exists(ReImg) แล้ว
ตั้งค่า TheFile=File.Item(ReImg)
ถ้า TheFile.Belong <> ReBel แล้ว
TheFile.Belong=TheFile.Belong&"|"&Rebel
สิ้นสุดถ้า
อื่น
ถ้า (List=0 AND Chk =0) หรือ (List=1 และ Chk=-1) หรือ (List=2 และ Chk=1 ) หรือ List=3 แล้ว
ตั้งค่า TheFile= FileInfo ใหม่
TheFile.FileName=สร้างอิมเมจใหม่
TheFile.Belong=กบฏ
TheFile.Exists=Chk
ไฟล์เพิ่ม ReImg ไฟล์
เลือก ชนิดการสแกนกรณีและปัญหา
กรณีที่ 1 รูปภาพ=รูปภาพ+1
กรณีที่ 2 DbImg = DbImg+1
กรณีอื่น
ถ้า AddNum = 0 แล้ว
DbImg = DbImg+1
อื่น
รูปภาพ=รูปภาพ+1
สิ้นสุดถ้า
สิ้นสุดการเลือก
สิ้นสุดถ้า
สิ้นสุดถ้า
สิ้นสุด
ฟังก์ชั่นส่วนตัวย่อย GetPath (Str) 'รับเส้นทางไฟล์
'response.write str&"<br>"
อุณหภูมิสลัว, สิ้นสุด
Temp=แทนที่(Str,"/", "")
EndB=InstrRev(ชั่วคราว,"")
ถ้า EndB = 0 แล้ว
GetPath=SPath
อื่น
GetPath=ซ้าย(ชั่วคราว,สิ้นสุด)
สิ้นสุดถ้า
'response.write GetPath&"<BR>"
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่นส่วนตัว GetFn(Str) 'รับชื่อพาธสัมพัทธ์ของไฟล์'
อุณหภูมิสลัว
อุณหภูมิ=Str
'response.write temp&"<br>"
Temp=แทนที่(Str,SPath,"")
Temp=แทนที่(ชั่วคราว,"","/")
GetFn=อุณหภูมิ
ฟังก์ชันสิ้นสุด
คลาสสิ้นสุด
คลาส FileInfo
Dim FileName,Belong,Exists
Private Sub Class_Initialize
ชื่อไฟล์ = ""
เป็นของ = ""
มีอยู่ = ""
จบย่อย
จบคลาส
-
ตัวอย่างการใช้งาน
< %@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">
</หัว>
<ร่างกาย>
<ชื่อแบบฟอร์ม = "form1" method = "โพสต์" action = "scan.asp">
<table width="60%" border="0" align="center" cellspacing="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="Path">
<option value="/"/</option>
-
fso,f,fd,p สลัว
p=server.MapPath("/")
ตั้งค่า fso=Server.CreateObject("Scripting.FileSystemObject")
ฟังก์ชั่น showpath (str)
ตั้งค่า f=fso.getfolder(str)
ตั้งค่า fd=f.โฟลเดอร์ย่อย
สำหรับแต่ละ fds ใน fd
การตอบสนองเขียน "<option value="&Replace(Replace(fds,p,""),"","/")&">"&Replace(Replace(fds,p,""),""," /")&"</option>"
ตั้งค่า ff=fso.getfolder(fds)
ตั้งค่า ffd=ff.โฟลเดอร์ย่อย
ถ้า 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">
ทั้งหมด
<ชื่ออินพุต = "SType" type = "วิทยุ" value = "1" เลือกแล้ว>
สแกนไฟล์
<ประเภทอินพุต = "วิทยุ" ชื่อ = "SType" ค่า = "2">
สแกนฐานข้อมูล</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">ประเภทการแสดงผล:</div></td>
<td height="20"><input name="LType" type="radio" value="0" ถูกเลือก>
ไม่ถูกต้อง
<ประเภทอินพุต = "วิทยุ" ชื่อ = "LType" ค่า = "1">
เส้นทางเครือข่าย
<ประเภทอินพุต = "วิทยุ" ชื่อ = "LType" ค่า = "2">
มีประสิทธิภาพ
<ประเภทอินพุต = "วิทยุ" ชื่อ = "LType" ค่า = "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" ถูกเลือก>
งูเห่า
<input name="Ext" type="checkbox" id="Ext" value="htm" ที่เลือก>
ฮึ
<input name="Ext" type="checkbox" id="Ext" value="html" ที่เลือก>
HTML
<ชื่ออินพุต = "Ext" type = "ช่องทำเครื่องหมาย" id = "Ext" value = "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">
คอลัมน์รหัสรูปภาพ:
<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="allinput">
</div></td>
</tr>
</ตาราง>
</แบบฟอร์ม>
</ร่างกาย>
</html>
สแกน.asp
<!--#include file="scan.inc"-->
-
mcs,fn,fb สลัว
-
<link href="css.css" rel="stylesheet">
<table width="70%" border="0" align="center" cellpadding="5" cellspacing="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 = ค่าเริ่มต้น
หาก Request(ID) <> "" จากนั้น
GetVar = คำขอ (ID)
สิ้นสุด ถ้า
ฟังก์ชันสิ้นสุด
Dim SType, LType, เส้นทาง, ต่อ, Conn, แท็บ, ColID, ColImg
SType=GetVar("SType",1)
LType=GetVar("LType",3)
Path=GetVar("เส้นทาง"/")
Ext = Trim(แทนที่(GetVar("Ext","htm,html,asp,inc"),", ","/"))
Conn=GetVar("Conn", "")
Tab=GetVar("แท็บ", "")
ColID=GetVar("ColID","")
ColImg=GetVar("ColImg","")
Conn = "ผู้ให้บริการ = Microsoft.Jet.OLEDB.4.0; แหล่งข้อมูล = "&Server.MapPath("/db1.mdb")
ตั้งค่า mcs= mcscanimg ใหม่
mcs.ScanType=Sประเภท
mcs.list=ประเภท L
mcs.ScanText=ต่อ
mcs.conn=คอนน์
mcs.Path=เส้นทาง
mcs.table=แท็บ
mcs.ColID=คอลไอดี
mcs.ColImg=คอลอิมเมจ
mcs.สแกน()
สำหรับแต่ละ fn ใน mcs.file
ตั้งค่า fb=mcs.file(fn)
-
<tr bgcolor="#FFFFFF">
<td valign="top"><%=fb.filename%></td>
<td><%=แทนที่(fb.เป็นของ,"|","<br>")%></td>
<td><%
ถ้า fb.Exists=1 แล้ว
ตอบกลับเขียน "เส้นทางที่ถูกต้อง"
elseif fb.exists=0 แล้ว
ตอบกลับ เขียนว่า "เส้นทางไม่ถูกต้อง"
อื่น
การตอบสนองเขียน "เส้นทางที่ไม่ใช่ท้องถิ่น"
สิ้นสุดถ้า
%></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>
</ตาราง>
<%set mcs=ไม่มีอะไร%>