Scan.inc
<%
« Explication : c'est la première fois que j'écris un cours d'application. Veuillez me dire s'il y a quelque chose d'inapproprié ! QQ : 1168064
'Propriétés et méthodes
'1. ScanType : le type d'analyse. Valeur par défaut : 1. Valeurs : 0 analyse les fichiers et les bases de données. 1 analyse les fichiers. 2 analyse les bases de données.
'2. Conn, Table, ColImg, ColID : utilisés lors de l'analyse de la base de données, respectivement la chaîne de connexion, le nom de la table, le nom de la colonne d'image et le nom de la colonne ID correspondant à l'image.
'3. Liste : type d'affichage. Valeur par défaut : 0. Valeur : 0 image invalide 1 image réseau 2 image valide 3 tous
'4. ScanText : Type d'image numérisée. Valeur par défaut : Asp/html/htm. Valeur : Extension de fichier, séparée par "/".
'5. Chemin : Chemin analysé : La valeur par défaut est le répertoire racine du site Web, veuillez utiliser des chemins relatifs. Par exemple "/dsj"
'6. Scan() : méthode. Numériser selon les paramètres
'7. Fichier : enregistrez toutes les informations numérisées. Appelé après la méthode Scan()
'8. Dossiers : nombre de dossiers analysés
'9. Fichiers : Nombre de fichiers analysés.
'10. TotalSize : la taille totale du répertoire. G, M, B sont automatiquement affichés.
'11. Images : Nombre d'images dans le fichier numérisé
'12. Existe : nombre d'échecs
'13. DbImg : Nombre d'images dans la base de données
'14. TotalImg : Nombre d'images numérisées
'15. RunTime : heure du processus d'analyse. Unité milliseconde
'16. Concernant l'utilisation du Fichier :
' Pour chaque Fn dans ObjName.file …… Suivant
'Fn.FileName : nom de l'image, y compris le chemin
' Fn.Belong : le fichier ou la base de données où se trouve l'image (les fichiers sont séparés par "|")
'Fn.Exists : s'il est valide. 0 signifie invalide, 1 signifie valide - 1 signifie chemin non local et ne peut pas être jugé.
Option explicite
ClasseMCScanImg
dim Fichier, ScanType, Conn, Table, ColId, ColImg, FSO, Chemin, Liste, ScanText, Spath, Version
dim Dossiers, Fichiers, Taille totale, Images, Existe, sFiles, Début, FinT, RunTime, DbImg, TotalImg, Filtre
Sous-classe privée_Initialize
Définir le fichier = Server.Createobject("Scripting.Dictionary")
Définir FSO = CreateObject("Scripting.FileSystemObject")
Type de numérisation=1
Conn=""
Tableau=""
ColImg=""
ID Col=""
Chemin="/"
sPath = Serveur.MapPath("/")
Liste=0
ScanText="asp/htm/html"
Dossiers=0
Fichiers=0
Taille totale=0
Image=0
DbImg=0
Existe=0
sFichiers=0
TotalImg=0
Début = Minuterie
Fin = Minuterie
Durée d'exécution = 0
Filtre="src=(.[^>^&]*)(.gif|.jpg)"
Version="1.00"
Fin de la
sous-classe privée_Terminate
Définir le fichier = rien
Définir FSO = Rien
End Sub
Public Function Scan() 'Démarrer l'analyse
si left(path,1)="/" alors
chemin=Schemin&Remplacer(chemin,"/","")
autre
Chemin=Schemin&""&Replace(chemin,"/","")
finir si
Si ScanType=1 alors
Fichier de numérisation (Chemin)
SinonSi ScanType=2 Alors
ScanDb()
Autre
Fichier de numérisation (Chemin)
ScanDb()
Fin si
FinT=minuterie
RunTime=FormatNumber(EndT-Start)*1000
Taille totale=shb(Taille totale)
TotalImg=DbImg+Images
End Function
Private Sub ScanDB() 'Analyser la base de données. Le chemin ici est difficile à déterminer, veuillez le modifier dans InsDb (après If AddNum=0)
Dim Rs,RetStr,ReBel,SQL
SQL="Sélectionnez "&ColID&","&ColIMG&" Dans "&Table&" Trier par "&ColID&" DESC"
'En cas d'erreur, reprendre ensuite
Si Conn="" OU Table="" OU ColID="" OU ColIMG = "" Alors
Quitter le sous-marin
Autre
Définir Rs = Server.CreateObject("ADODB.RecordSet")
Rs.Open SQL,conn,3,3
alors que ce n'est pas Rs.EOF
RetStr=Rs(1)
Colonne ReBel="&ColImg&" dans la table "&Table&" (ID : "&Rs(0)&")"
InsDb RetStr,ReBel,0,""
Rs.MoveNext
Wende
Rs.Fermer
Définir Rs = Rien
Fin si
End Sub
Private Sub ScanFile(PathStr) 'Analyser le fichier. récursivité
Dim f,ff,fn,fd,fdn,RealPath,fr,fc
'Réponse.écrire PathStr&"<br>"
Définir ff = fso.getfolder(pathstr)
Définir f = ff.files
Définir fd = ff.subfolders
Si f.Count >0 Alors
Pour chaque fn dans f
Fichiers=Fichiers+1
TailleTotale=TailleTotale+fn.Taille
Si ChkFileName(fn.Name) Alors
sFichiers=sFichiers+1
Si Right(PathStr,1) <> "" Alors
RealPath=PathStr&""&fn.Name
Autre
RealPath=PathStr&fn.Name
Fin si
Définir fr = FSO.OpenTextFile(RealPath,1)
fc=fr.ReadAll
'response.write RealPath&"<br>"
Filtre RegExpTest, fc, RealPath
Fin si
Suivant
Fin Si
Si fd.Count> 0 Alors
Pour chaque fdn dans fd
Dossiers=Dossiers+1
faible température
si c'est vrai (PathStr,1) <> "" alors
temp=PathStr&""&fdn.Name
autre
temp=PathStr&fdn.Name
finir si
Fichier de numérisation (temp)
Suivant
Fin si
End Sub
Private Sub RegExpTest(Patrn, Strng,PathStr) 'Rechercher des images
Dim RegEx, Match, Correspondances, Chk, ReImg, RetStr, ReBel, TheFile
Définir RegEx = Nouvelle RegExp
RegEx.Pattern = Modèle
RegEx.IgnoreCase = Vrai
RegEx.Global = Vrai
Définir les correspondances = RegEx.Execute (Strng)
Pour chaque match dans les matchs
RetStr = Remplacer(Match.Value,"src=","")
RetStr = Remplacer(RetStr,"'","")
RetStr = Remplacer(RetStr,"""","")
Chk = 0
ReBel=GetFn(CheminStr)
InsDb RetStr,ReBel,1,PathStr
Suivant
End Sub
Private Function GetExt(FullPath) 'Obtenir l'extension du fichier, utilisée pour déterminer s'il s'agit d'un type de fichier analysé
Faible température
Si FullPath <> "" Alors
Temp = Milieu (FullPath, InStrRev (FullPath, "")+1)
Si InStr(Temp,".")>0 Alors
GetExt=Mid(Temp,InStrRev(Temp, ".")+1)
Autre
GetExt=Temp
Fin si
Autre
GetExt = ""
Fin si
End Function
Private Function ChkFileName(Str) 'Détecter si le fichier est le type de fichier à analyser
Dim ar,i,fn
fn=GetExt(str)
ar=Split(ScanText,"/")
ChkFileName=Faux
Pour i=0 Vers ubound(ar)
Si lCase(fn) =lCase(Trim(ar(i))) Alors
ChkFileName=Vrai
Fonction de sortie
Fin si
Suivant
End Function
Private Function shb(n) 'Afficher le nombre d'octets
Si n<1024 Alors
shb = n&"octet"
SinonSi n>1024 et n<1024*1024 Alors
shb = formatnuméro(n/1024,2)&"K"
SinonSi n>=1024*1024 et n <1024*1024*1024 Alors
shb = formatnuméro(n/(1024*1024),2)&"M"
Autre
shb =numérodeformat(n/(1024*1024*1024),2)&"G"
Fin si
End Function
Private Sub InsDb(RetStr,ReBel,AddNum,PathStr) 'Analyser si l'image est valide et l'ajouter à l'objet dictionnaire
dim chk,ReImg,TheFile
Si InStr(RetStr," http://")>0 OU Instr(RetStr," ftp://")>0 Alors
ReImg=RetStr
Chk=-1
Autre
RetStr = Remplacer(RetStr,"/","")
Si (Left(RetStr,1) = "" ) Alors
RetStr=SPath&Retstr
ElseIf Left(RetStr,3) = ".." Alors
faible température
temp=GetPath(PathStr)
Do Until Left(RetStr,3) <> ".." 'Gérer les chemins relatifs
Temp=Fso.GetParentFolderName(Temp)
RetStr=Mid(RetStr,4,len(RetStr)-3)
Boucle
RetStr=Temp&""&RetStr
Autre
Si AddNum=0 Alors
si left(RetStr,1)="" alors
RetStr=Chemin&""&Retstr
Autre
RetStr=chemin&Retstr
Fin si
autre
RetStr=getpath(Pathstr)&RetStr
Fin SI
Fin Si
Si FSO.FileExists(RetStr) Alors
Chk=1
Fin si
ReImg=GetFn(RetStr)
Fin si
Si Chk=0 Alors
Existe=Existe+1
Terminer si
Si File.Exists (ReImg) alors
Définir TheFile=File.Item(ReImg)
Si TheFile.Belong <> ReBel Alors
TheFile.Belong=TheFile.Belong&"|"&Rebelle
Fin si
Autre
Si (List=0 AND Chk =0) OR (List=1 And Chk=-1) Ou (List=2 And Chk=1 ) Ou List=3 Then
Définir TheFile = Nouveau FileInfo
TheFile.FileName=ReImg
TheFile.Belong=ReBel
TheFile.Exists=Chk
Fichier.Ajouter ReImg,TheFile
Sélectionnez le type d'analyse du cas
Cas 1 Images=Images+1
Cas 2 DbImg = DbImg+1
Autre cas
Si AddNum = 0 Alors
ImgDb = ImgDb+1
Autre
Images=Images+1
Fin si
Fin de la sélection
Fin si
Fin si
End Sub
Private Function GetPath(Str) 'Obtenir le chemin du fichier
'response.write str&"<br>"
Dim Temp,EndB
Temp=Remplacer(Str,"/","")
FinB=InstrRev(Temp,"")
Si FinB = 0 Alors
GetPath=SPath
Autre
GetPath=Gauche(Temp,FinB)
Fin si
'response.write GetPath&"<BR>"
End Function
Private Function GetFn(Str) 'Obtenir le nom de chemin relatif du fichier
Faible température
Temp=Str
'response.write temp&"<br>"
Temp=Remplacer(Str,SPath,"")
Temp=Remplacer(Temp,"","/")
GetFn=Temp
End Function
End Class
Class FileInfo
Dim FileName,Belong,Exists
Private Sub Class_Initialize
Nom du fichier=""
Appartenir=""
Existe=""
Fin de la sous-
classe de fin
%>
Exemples d'applications
< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " http://www.w3.org/TR/html4/loose.dtd ">
<%
%>
<html>
<tête>
<méta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Document sans titre</title>
<link rel="stylesheet" href="css.css">
</tête>
<corps>
<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">Numériser l'image</div></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="26%" height="20"><div align="right">Dossier de numérisation :</div></td>
<td width="74%" height="20"><select name="Chemin" id="Chemin">
<valeur d'option="/">/</option>
<%
faible fso,f,fd,p
p=serveur.MapPath("/")
set fso=Server.CreateObject("Scripting.FileSystemObject")
fonction showpath(str)
set f=fso.getfolder(str)
définir fd = f.subfolders
pour chaque fds dans fd
Response.Write "<option value="&Replace(Replace(fds,p,""),"","/")&">"&Replace(Replace(fds,p,""),""," /")&"</option>"
définir ff=fso.getfolder(fds)
définir ffd=ff.subfolders
si ffd.count>0 alors
chemin d'exposition (fds)
finir si
suivant
fonction de fin
showpath(p)%>
</select></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Type de numérisation : </div></td>
<td height="20"><input type="radio" name="SType" value="0">
tous
<input name="SType" type="radio" value="1" vérifié>
Scanner des fichiers
<input type="radio" name="SType" value="2">
Analyser la base de données</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Type d'affichage :</div></td>
<td height="20"><input name="LType" type="radio" value="0" vérifié>
Invalide
<input type="radio" name="LType" value="1">
chemin réseau
<input type="radio" name="LType" value="2">
efficace
<input type="radio" name="LType" value="3">
Tout</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Type de fichier : </div></td>
<td height="20"><input name="Ext" type="checkbox" id="Ext" value="asp" vérifié>
Aspic
<input name="Ext" type="checkbox" id="Ext" value="htm" vérifié>
Htm
<input name="Ext" type="checkbox" id="Ext" value="html" vérifié>
HTML
<input name="Ext" type="checkbox" id="Ext" value="inc" vérifié>
Inc</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Base de données :</div></td>
<td height="20">Tableau :
<input name="Tab" type="text" id="Tab" size="5" class="allinput">
Colonne ID de l'image :
<input name="ColID" type="text" id="ColID" size="5" class="allinput">
Colonne Chemin de l'image :
<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="Démarrer l'analyse" class="allinput">
</div></td>
</tr>
</table>
</form>
</corps>
</html>
scan.asp
<!--#include file="scan.inc"-->
<%
dim mcs, fn, fb
%>
<link href="css.css" rel="stylesheet">
<table width="70%" border="0" align="center" cellpadding="5" cellpacing="1" bgcolor="#003366">
<tr bgcolor="#AAAAFF">
<td width="30%" height="30">Nom de l'image</td>
<td width="39%" height="30">Emplacement</td>
<td width="31%" height="30">valide</td>
</tr>
<%
Fonction GetVar(ID,Par défaut)
GetVar = Par défaut
Si Requête(ID) <> "" Alors
GetVar = Requête (ID)
Fin SI
Fonction de fin
Dim SType, LType, Chemin, Ext, Conn, Tab, ColID, ColImg
SType=GetVar("SType",1)
LType=GetVar("LType",3)
Chemin=GetVar("Chemin","/")
Ext = Trim(Remplacer(GetVar("Ext","htm,html,asp,inc"),", ","/"))
Conn=ObtenirVar("Conn","")
Tab=ObtenirVar("Tab","")
ColID=GetVar("ColID","")
ColImg=GetVar("ColImg","")
Conn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("/db1.mdb")
définir mcs = nouveau mcscanimg
mcs.ScanType=SType
mcs.list=LType
mcs.ScanText=Ext
mcs.conn=Conn
mcs.Path=Chemin
mcs.table=Tabulation
mcs.ColID=ColID
mcs.ColImg=ColImg
mcs.scan()
pour chaque fn dans mcs.file
définir fb=mcs.file(fn)
%>
<tr bgcolor="#FFFFFF">
<td valign="top"><%=fb.filename%></td>
<td><%=Replace(fb.Belong,"|","<br>")%></td>
<td><%
si fb.Exists=1 alors
réponse.Écrivez "chemin valide"
sinon si fb.exists = 0 alors
réponse.Écrivez "Chemin invalide"
autre
réponse.Écrivez "chemin non local"
finir si
%></td>
</tr>
<%
suivant
%>
<tr bgcolor="#FFFFFF">
<td colspan="3">Total des fichiers analysés : <%=mcs.files%> ; Dossiers analysés : <%=mcs.folders%> ; Taille totale : <%=mcs.totalsize%><br>Images numérisées Nombre : <%=mcs.images&"; Nombre d'images de la base de données : "&mcs.dbimg&"; Nombre total d'images : "&mcs.TotalImg%>; Nombre d'échecs : <%=mcs.exists%><br>Durée d'exécution : <%=mcs.runtime%>millisecondes</td>
</tr>
</table>
<%set mcs=rien%>