Scan.inc
<%
„Erklärung: Dies ist das erste Mal, dass ich einen Bewerbungskurs schreibe. Bitte sagen Sie mir, ob etwas Unangemessenes vorliegt! QQ: 1168064
„Eigenschaften und Methoden
'1. ScanType: Der Scantyp. Standardwert: 1. Werte: 0 scannt Dateien und Datenbanken, 1 scannt Dateien, 2 scannt Datenbanken.
'2. Conn, Table, ColImg, ColID: werden beim Scannen der Datenbank verwendet, jeweils die Verbindungszeichenfolge, der Tabellenname, der Bildspaltenname und der dem Bild entsprechende ID-Spaltenname.
'3. Liste: Anzeigetyp. Standardwert: 0. Wert: 0 ungültiges Bild 1 Netzwerkbild 2 gültiges Bild 3 alle
'4. ScanText: Gescannter Bildtyp. Standardwert: Asp/html/htm. Wert: Dateierweiterung, getrennt durch „/“.
'5. Pfad: Gescannter Pfad: Der Standardwert ist das Stammverzeichnis der Website. Bitte verwenden Sie relative Pfade. Zum Beispiel „/dsj“
'6. Scan(): Methode. Scannen Sie entsprechend den Einstellungen
'7. Datei: Alle gescannten Informationen speichern. Wird nach der Scan()-Methode aufgerufen
'8. Ordner: Anzahl der gescannten Ordner
'9. Dateien: Anzahl der gescannten Dateien.
'10. TotalSize: Die Gesamtgröße des Verzeichnisses. G, M, B werden automatisch angezeigt.
'11. Bilder: Anzahl der Bilder in der gescannten Datei
'12. Vorhanden: Anzahl der Fehler
'13. DbImg: Anzahl der Bilder in der Datenbank
'14. TotalImg: Anzahl der gescannten Bilder
'15. Laufzeit: Die Zeit des Scanvorgangs. Einheit Millisekunde
'16. Bezüglich der Verwendung von File:
' Für jede Fn in ObjName.file …… Weiter
'Fn.FileName: Bildname, inklusive Pfad
' Fn.Belong: die Datei oder Datenbank, in der sich das Bild befindet (die Dateien werden durch „|“ getrennt)
'Fn.Exists: ob es gültig ist. 0 bedeutet ungültig, 1 bedeutet gültig – 1 bedeutet nicht lokaler Pfad und kann nicht beurteilt werden.
Option explizit
ClassMCScanImg
dim File,ScanType,Conn,Table,ColId,ColImg,FSO,Path,List,ScanText,Spath,Version
dim Folders,Files,TotalSize,Images,Exists,sFiles,Start,EndT,RunTime,DbImg,TotalImg,Filter
Private Sub Class_Initialize
Set File = Server.Createobject("Scripting.Dictionary")
Setze FSO = CreateObject("Scripting.FileSystemObject")
ScanType=1
Conn=""
Tabelle=""
ColImg=""
ColId=""
Pfad="/"
sPath = Server.MapPath("/")
Liste=0
ScanText="asp/htm/html"
Ordner=0
Dateien=0
Gesamtgröße=0
Bilder=0
DbImg=0
Existiert=0
sFiles=0
TotalImg=0
Start=Timer
Endt=Timer
Laufzeit=0
Filter="src=(.[^>^&]*)(.gif|.jpg)"
Version="1.00"
End Sub
Private Sub Class_Terminate
Legen Sie Datei=Nichts fest
Stellen Sie FSO = Nichts ein
End Sub
Public Function Scan() 'Scannen starten
if left(path,1)="/" dann
path=Spath&Replace(path,"/","")
anders
Path=Spath&""&Replace(path,"/","")
Ende wenn
Wenn ScanType=1 dann
Scandatei (Pfad)
ElseIf ScanType=2 Dann
ScanDb()
Anders
ScanFile(Pfad)
ScanDb()
Ende wenn
EndT=Timer
RunTime=FormatNumber(EndT-Start)*1000
TotalSize=shb(TotalSize)
TotalImg=DbImg+Bilder
End Function
Private Sub ScanDB() 'Datenbank scannen. Der Pfad hier ist schwer zu bestimmen, bitte ändern Sie ihn in InsDb (nach If AddNum=0)
Dimmen Sie Rs,RetStr,ReBel,SQL
SQL="Wählen Sie „&ColID&“, „&ColIMG&“ aus „&Table&“ aus, sortieren Sie nach „&ColID&“ DESC“
„Bei Fehler Weiter fortsetzen.“
Wenn Conn = „“ OR Table = „“ OR ColID = „“ OR ColIMG = „“ Dann
Sub verlassen
Anders
Setze Rs = Server.CreateObject("ADODB.RecordSet")
Rs.Open SQL,conn,3,3
Während nicht Rs.EOF
RetStr=Rs(1)
ReBel="&ColImg&" Spalte in Tabelle „&Table&“ (ID: „&Rs(0)&“)“
InsDb RetStr,ReBel,0,""
Rs.MoveNext
Wend
Rs.Schließen
Setze Rs=Nichts
Ende wenn
End Sub
Private Sub ScanFile(PathStr) 'Scannen Sie die Datei. Rekursion
Dimmen Sie f,ff,fn,fd,fdn,RealPath,fr,fc
'Response.write PathStr&"<br>"
Setze ff = fso.getfolder(pathstr)
Setze f = ff.files
Setze fd = ff.subfolders
Wenn f.Count >0 Dann
Für jede fn In f
Dateien=Dateien+1
TotalSize=TotalSize+fn.Size
Wenn ChkFileName(fn.Name) Dann
sFiles=sFiles+1
Wenn Right(PathStr,1) <> "" Dann
RealPath=PathStr&""&fn.Name
Anders
RealPath=PathStr&fn.Name
Ende wenn
Setze fr = FSO.OpenTextFile(RealPath,1)
fc=fr.ReadAll
'response.write RealPath&"<br>"
RegExpTest filter,fc,RealPath
Ende wenn
Nächste
End If
If fd.Count> 0 Then
Für jeden fdn In fd
Ordner=Ordner+1
gedämpfte Temp
if right (PathStr,1) <> "" dann
temp=PathStr&""&fdn.Name
anders
temp=PathStr&fdn.Name
Ende wenn
ScanFile(temp)
Nächste
Ende wenn
End Sub
Private Sub RegExpTest(Patrn, Strng,PathStr) 'Bilder finden
Dimmen Sie RegEx, Match, Matches,Chk,ReImg,RetStr,ReBel,TheFile
Setze RegEx = New RegExp
RegEx.Pattern = Patrn
RegEx.IgnoreCase = True
RegEx.Global = True
Set Matches = RegEx.Execute(Strng)
Für jedes Spiel in Spielen
RetStr = Ersetzen(Match.Value,"src="")
RetStr = Ersetzen(RetStr,"'","")
RetStr = Ersetzen(RetStr,"""","")
Chk = 0
ReBel=GetFn(PathStr)
InsDb RetStr,ReBel,1,PathStr
Nächste
End Sub
Private Function GetExt(FullPath) 'Ruft die Dateierweiterung ab, um festzustellen, ob es sich um einen gescannten Dateityp handelt
Dimmtemp
Wenn FullPath <> "" Dann
Temp = Mid(FullPath,InStrRev(FullPath, "")+1)
Wenn InStr(Temp,".")>0 Dann
GetExt=Mid(Temp,InStrRev(Temp, ".")+1)
Anders
GetExt=Temp
Ende wenn
Anders
GetExt = ""
Ende wenn
End Function
Private Function ChkFileName(Str) 'Erkennen Sie, ob es sich bei der Datei um den Dateityp handelt, der gescannt werden soll
Dim ar,i,fn
fn=GetExt(str)
ar=Split(ScanText,"/")
ChkFileName=False
Für i=0 bis ubound(ar)
Wenn lCase(fn) =lCase(Trim(ar(i))) Dann
ChkFileName=True
Exit-Funktion
Ende wenn
Nächste
End Function
Private Function shb(n) 'Zeigt die Anzahl der Bytes an
Wenn n<1024, dann
shb = n&"byte"
ElseIf n>1024 und n<1024*1024 Then
shb = Formatnummer(n/1024,2)&"K"
ElseIf n>=1024*1024 und n <1024*1024*1024 Dann
shb = Formatnummer(n/(1024*1024),2)&"M"
Anders
shb =formatnumber(n/(1024*1024*1024),2)&"G"
Ende wenn
End Function
Private Sub InsDb(RetStr,ReBel,AddNum,PathStr) 'Analysieren Sie, ob das Bild gültig ist, und fügen Sie es dem Wörterbuchobjekt hinzu
dim chk,ReImg,TheFile
Wenn InStr(RetStr," http://")>0 ODER Instr(RetStr," ftp://")>0 Dann
ReImg=RetStr
Chk=-1
Anders
RetStr = Ersetzen(RetStr,"/","")
If (Left(RetStr,1) = "" ) Dann
RetStr=SPath&Retstr
ElseIf Left(RetStr,3) = ".." Then
gedämpfte Temp
temp=GetPath(PathStr)
Do Until Left(RetStr,3) <> ".." 'Relative Pfade behandeln
Temp=Fso.GetParentFolderName(Temp)
RetStr=Mid(RetStr,4,len(RetStr)-3)
Schleife
RetStr=Temp&""&RetStr
Anders
Wenn AddNum=0, dann
if left(RetStr,1)="" dann
RetStr=Pfad&""&Retstr
Anders
RetStr=Pfad&Retstr
Ende wenn
anders
RetStr=getpath(Pathstr)&RetStr
Beenden Sie IF
End If
If FSO.FileExists(RetStr) Then
Chk=1
Ende wenn
ReImg=GetFn(RetStr)
Ende wenn
Wenn Chk=0, dann
Existiert=Existiert+1
Ende wenn
Wenn File.Exists(ReImg) dann
Setze TheFile=File.Item(ReImg)
Wenn TheFile.Belong <> ReBel, dann
TheFile.Belong=TheFile.Belong&"|"&Rebel
Ende wenn
Anders
Wenn (Liste=0 UND Chk=0) ODER (Liste=1 und Chk=-1) oder (Liste=2 und Chk=1) oder Liste=3 dann
Setzen Sie TheFile= New FileInfo
TheFile.FileName=ReImg
TheFile.Belong=ReBel
TheFile.Exists=Chk
File.Add ReImg,TheFile
Wählen Sie Case ScanType aus
Fall 1 Bilder=Bilder+1
Fall 2 DbImg = DbImg+1
Fall anders
Wenn AddNum = 0, dann
DbImg = DbImg+1
Anders
Bilder=Bilder+1
Ende wenn
Endauswahl
Ende wenn
Ende wenn
End Sub
Private Function GetPath(Str) 'Den Dateipfad abrufen
'response.write str&"<br>"
Dim Temp,EndB
Temp=Replace(Str,"/","")
EndB=InstrRev(Temp,"")
Wenn EndB = 0, dann
GetPath=SPath
Anders
GetPath=Left(Temp,EndB)
Ende wenn
'response.write GetPath&"<BR>"
End Function
Private Function GetFn(Str) 'Ruft den relativen Pfadnamen der Datei ab
Dimmtemp
Temp=Str
'response.write temp&"<br>"
Temp=Replace(Str,SPath,"")
Temp=Ersetzen(Temp,"","/")
GetFn=Temp
End Function
End Class
Class FileInfo
Dim FileName,Belong,Exists
Private Sub Class_Initialize
Dateiname=""
Gehören=""
Existiert=""
End-Sub-
End-Klasse
%>
Anwendungsbeispiele
< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd ">
<%
%>
<html>
<Kopf>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Unbenanntes Dokument</title>
<link rel="stylesheet" href="css.css">
</head>
<body>
<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">Bild scannen</div></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="26%" height="20"><div align="right">Ordner scannen:</div></td>
<td width="74%" height="20"><select name="Path" id="Path">
<option value="/">/</option>
<%
dim fso,f,fd,p
p=server.MapPath("/")
set fso=Server.CreateObject("Scripting.FileSystemObject")
Funktion showpath(str)
set f=fso.getfolder(str)
setze fd=f.subfolders
für jedes fds in fd
Response.Write "<option value="&Replace(Replace(fds,p,""),"","/")&">"&Replace(Replace(fds,p,""),""," /")&"</option>"
set ff=fso.getfolder(fds)
setze ffd=ff.subfolders
wenn ffd.count>0 dann
showpath(fds)
Ende wenn
nächste
Endfunktion
showpath(p)%>
</select></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Scantyp: </div></td>
<td height="20"><input type="radio" name="SType" value="0">
alle
<input name="SType" type="radio" value="1" geprüft>
Dateien scannen
<input type="radio" name="SType" value="2">
Datenbank scannen</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Anzeigetyp:</div></td>
<td height="20"><input name="LType" type="radio" value="0" geprüft>
Ungültig
<input type="radio" name="LType" value="1">
Netzwerkpfad
<input type="radio" name="LType" value="2">
effizient
<input type="radio" name="LType" value="3">
Alle</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Dateityp: </div></td>
<td height="20"><input name="Ext" type="checkbox" id="Ext" value="asp" selected>
Asp
<input name="Ext" type="checkbox" id="Ext" value="htm" geprüft>
Htm
<input name="Ext" type="checkbox" id="Ext" value="html" markiert>
HTML
<input name="Ext" type="checkbox" id="Ext" value="inc" geprüft>
Inc</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Datenbank:</div></td>
<td height="20">Tabelle:
<input name="Tab" type="text" id="Tab" size="5" class="allinput">
Spalte „Bild-ID“:
<input name="ColID" type="text" id="ColID" size="5" class="allinput">
Spalte „Bildpfad“:
<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="Scan starten" class="allinput">
</div></td>
</tr>
</table>
</form>
</body>
</html>
scan.asp
<!--#include file="scan.inc"-->
<%
dimmen Sie 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">Bildname</td>
<td width="39%" height="30">Standort</td>
<td width="31%" height="30">gültig</td>
</tr>
<%
Funktion GetVar(ID,Default)
GetVar = Standard
Wenn Request(ID) <> "" Dann
GetVar = Anfrage(ID)
Beenden Sie IF
Funktion beenden
Dimmen Sie SType,LType,Path,Ext,Conn,Tab,ColID,ColImg
SType=GetVar("SType",1)
LType=GetVar("LType",3)
Path=GetVar("Path","/")
Ext = Trim(Replace(GetVar("Ext","htm,html,asp,inc"),", ","/"))
Conn=GetVar("Conn","")
Tab=GetVar("Tab","")
ColID=GetVar("ColID","")
ColImg=GetVar("ColImg","")
Conn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("/db1.mdb")
setze mcs= new mcscanimg
mcs.ScanType=SType
mcs.list=LType
mcs.ScanText=Ext
mcs.conn=Verbindung
mcs.Path=Pfad
mcs.table=Tab
mcs.ColID=ColID
mcs.ColImg=ColImg
mcs.scan()
für jede fn in mcs.file
set fb=mcs.file(fn)
%>
<tr bgcolor="#FFFFFF">
<td valign="top"><%=fb.filename%></td>
<td><%=Replace(fb.Belong,"|","<br>")%></td>
<td><%
wenn fb.Exists=1 dann
Antwort. Schreiben Sie „gültiger Pfad“
elseif fb.exists=0 dann
Antwort.Write „Ungültiger Pfad“
anders
Antwort. Schreiben Sie „nicht-lokaler Pfad“
Ende wenn
%></td>
</tr>
<%
nächste
%>
<tr bgcolor="#FFFFFF">
<td colspan="3">Gesamtzahl der gescannten Dateien: <%=mcs.files%>; Gesamtgröße der gescannten Bilder: <%=mcs.totalsize%><br>Anzahl der gescannten Bilder : <%=mcs.images&"; Anzahl der Datenbankbilder: "&mcs.dbimg&"; Gesamtzahl der Bilder: "&mcs.TotalImg%>; Anzahl der Fehler: <%=mcs.exists%><br>Laufzeit: <%=mcs.runtime%>Millisekunden</td>
</tr>
</table>
<%set mcs=nothing%>