Escanear.inc
<%
'Explicación: Esta es la primera vez que escribo una clase de solicitud. ¡Por favor, dígame si hay algo inapropiado! Pregunta: 1168064
'Propiedades y métodos
'1. ScanType: el tipo de escaneo. Valor predeterminado: 1. Valores: 0 escanea archivos y bases de datos 1 escanea archivos 2 escanea bases de datos.
'2.Conn, Table, ColImg, ColID: se utiliza al escanear la base de datos, respectivamente, la cadena de conexión, el nombre de la tabla, el nombre de la columna de imagen y el nombre de la columna de ID correspondiente a la imagen.
'3. Lista: tipo de visualización. Valor predeterminado: 0. Valor: 0 imagen no válida 1 imagen de red 2 imagen válida 3 todo
'4. ScanText: tipo de imagen escaneada. Valor predeterminado: Asp/html/htm. Valor: Extensión del archivo, separada por "/".
'5. Ruta: Ruta escaneada: el valor predeterminado es el directorio raíz del sitio web; utilice rutas relativas. Por ejemplo "/dsj"
'6. Escanear(): método. Escanear según la configuración
'7. Archivo: guarde toda la información escaneada. Llamado después del método Scan()
'8. Carpetas: Número de carpetas escaneadas
'9. Archivos: Número de archivos escaneados.
'10. TotalSize: El tamaño total del directorio. G, M, B se muestran automáticamente.
'11. Imágenes: Número de imágenes en el archivo escaneado
'12. Existe: número de fracasos
'13. DbImg: Número de imágenes en la base de datos.
'14. TotalImg: Número de imágenes escaneadas
'15. RunTime: El tiempo del proceso de escaneo. Unidad milisegundo
'16. Respecto al uso del Archivo:
' Para cada Fn en ObjName.file …… Siguiente
'Fn.FileName: nombre de la imagen, incluida la ruta
' Fn.Belong: el archivo o base de datos donde se encuentra la imagen (los archivos están separados por "|")
'Fn.Exists: si es válido. 0 significa no válido, 1 significa válido; 1 significa ruta no local y no se puede juzgar.
Opción explícita
ClaseMCScanImg
tenue Archivo,ScanType,Conn,Tabla,ColId,ColImg,FSO,Ruta,Lista,ScanText,Spath,Versión
carpetas oscuras, archivos, tamaño total, imágenes, existe, archivos s, inicio, fin, tiempo de ejecución, DbImg, TotalImg, filtro
Subclase privada_Inicializar
Establecer archivo = Server.Createobject("Scripting.Dictionary")
Establecer FSO = CreateObject ("Scripting.FileSystemObject")
Tipo de escaneo=1
Conexión=""
Tabla=""
ColImg=""
IdCol=""
Ruta="/"
sPath = Servidor.MapPath("/")
Lista=0
ScanText="asp/htm/html"
Carpetas=0
Archivos=0
Tamaño total=0
Imágenes=0
DbImg=0
Existe=0
sArchivos=0
Imagen total=0
Inicio=Temporizador
Fin=Temporizador
Tiempo de ejecución=0
Filtro="src=(.[^>^&]*)(.gif|.jpg)"
Versión="1.00"
Finalizar subclase
subprivada_Terminar
Establecer archivo=Nada
Establecer FSO = Nada
End Sub
Public Function Scan() 'Iniciar escaneo
si queda(ruta,1)="/" entonces
ruta=Spath&Replace(ruta,"/","")
demás
Ruta=Spath&""&Reemplazar(ruta,"/","")
terminar si
Si ScanType = 1 entonces
Archivo de escaneo (ruta)
De lo contrario, si ScanType = 2, entonces
EscanearDb()
Demás
Escanear archivo (ruta)
EscanearDb()
Terminar si
FinT=temporizador
Tiempo de ejecución=Número de formato(FinT-Inicio)*1000
Tamaño total=shb(Tamaño total)
TotalImg=DbImg+Imágenes
Función final
Private Sub ScanDB() 'Escanea la base de datos. La ruta aquí es difícil de determinar, cámbiela en InsDb (después de If AddNum=0)
Dim Rs,RetStr,ReBel,SQL
SQL="Seleccione "&ColID&", "&ColIMG&" de "&Tabla&" Ordene por "&ColID&" DESC"
'En caso de error, reanudar siguiente
Si Conn ="" O Table="" O ColID="" O ColIMG = "" Entonces
Salir Sub
Demás
Establecer Rs = Server.CreateObject ("ADODB.RecordSet")
Rs.Open SQL,conn,3,3
mientras no es Rs.EOF
RetStr=Rs(1)
ReBel="&ColImg&" columna en la tabla "&Table&" (ID: "&Rs(0)&")"
InsDb RetStr,ReBel,0,""
Rs.MoverSiguiente
Encaminarse a
Rs.Cerrar
Establecer Rs = Nada
Terminar si
End Sub
Private Sub ScanFile(PathStr) 'Escanea el archivo. recursividad
Dim f,ff,fn,fd,fdn,RealPath,fr,fc
'Respuesta.escribir PathStr&"<br>"
Establecer ff = fso.getfolder(pathstr)
Establecer f = ff.files
Establecer fd = ff.subcarpetas
Si f.Count >0 Entonces
Para cada fn en f
Archivos=Archivos+1
TamañoTotal=TamañoTotal+fn.Tamaño
Si ChkFileName (fn.Name) Entonces
sArchivos=sArchivos+1
Si es correcto (PathStr, 1) <> "" entonces
RutaReal=CadenaRuta&""&fn.Nombre
Demás
RutaReal=CadenaRuta&fn.Nombre
Terminar si
Establecer fr = FSO.OpenTextFile(RealPath,1)
fc=es.ReadAll
'respuesta.escribir RealPath&"<br>"
Filtro RegExpTest, fc, RealPath
Terminar si
Próximo
Finalizar si
si fd.Count> 0 entonces
Para cada fdn en fd
Carpetas=Carpetas+1
temperatura baja
si es correcto (PathStr,1) <> "" entonces
temp=PathStr&""&fdn.Nombre
demás
temp=PathStr&fdn.Nombre
terminar si
Escanear archivo (temporal)
Próximo
Terminar si
End Sub
Private Sub RegExpTest(Patrn, Strng,PathStr) 'Buscar imágenes
Dim RegEx, Coincidencia, Coincidencias, Chk, ReImg, RetStr, ReBel, TheFile
Establecer RegExp = Nueva RegExp
RegEx.Pattern = Patrón
RegEx.IgnoreCase = Verdadero
RegEx.Global = Verdadero
Establecer coincidencias = RegEx.Execute(Strng)
Para cada partido en partidos
RetStr = Reemplazar(Match.Value,"src="",")
RetStr = Reemplazar(RetStr,"'","")
RetStr = Reemplazar(RetStr,"""","")
Marca = 0
Rebelde=GetFn(PathStr)
InsDb RetStr,ReBel,1,PathStr
Próximo
End Sub
Private Function GetExt(FullPath) 'Obtiene la extensión del archivo, utilizada para determinar si es un tipo de archivo escaneado
Temperatura baja
Si FullPath <> "" Entonces
Temp = Medio(RutaCompleta,InStrRev(RutaCompleta, "")+1)
Si InStr(Temp,".")>0 Entonces
GetExt=Medio(Temp,InStrRev(Temp, ".")+1)
Demás
ObtenerExt=Temp
Terminar si
Demás
ObtenerExt = ""
Terminar si
Función final
Función privada ChkFileName(Str) 'Detecta si el archivo es del tipo que se va a escanear
Dim ar,i,fn
fn=GetExt(cadena)
ar=Dividir(EscanearTexto,"/")
ChkFileName=Falso
Para i=0 Para ubound(ar)
Si lCase(fn) =lCase(Trim(ar(i))) Entonces
ChkFileName=Verdadero
Función de salida
Terminar si
Próximo
Función final
Función privada shb(n) 'Muestra el número de bytes
Si n<1024 entonces
shb = n&"byte"
De lo contrario, si n>1024 y n<1024*1024, entonces
shb = número de formato(n/1024,2)&"K"
De lo contrario, si n>=1024*1024 y n <1024*1024*1024, entonces
shb = número de formato(n/(1024*1024),2)&"M"
Demás
shb =número de formato(n/(1024*1024*1024),2)&"G"
Terminar si
Función final
Private Sub InsDb(RetStr,ReBel,AddNum,PathStr) 'Analiza si la imagen es válida y la agrega al objeto del diccionario
control tenue, ReImg, TheFile
Si InStr(RetStr," http://")>0 O Instr(RetStr," ftp://")>0 Entonces
ReImg=RetStr
Marcar=-1
Demás
RetStr = Reemplazar(RetStr,"/","")
Si (Left(RetStr,1) = "" ) Entonces
RetStr=SPath&Retstr
ElseIf Left(RetStr,3) = ".." Entonces
temperatura baja
temp=GetPath(PathStr)
Do Until Left(RetStr,3) <> ".." 'Manejar rutas relativas
Temp=Fso.GetParentFolderName(Temp)
RetStr=Medio(RetStr,4,len(RetStr)-3)
Bucle
RetStr=Temp&""&RetStr
Demás
Si AddNum=0 entonces
si se deja(RetStr,1)="" entonces
RetStr=Ruta&""&Retstr
Demás
RetStr=ruta&Retstr
Terminar si
demás
RetStr=getpath(Pathstr)&RetStr
Fin SI
Finalizar
si FSO.FileExists(RetStr) Entonces
Marca=1
Terminar si
ReImg=GetFn(RetStr)
Terminar si
Si control = 0 entonces
Existe=Existe+1
terminar si
Si File.Exists (ReImg) entonces
Establecer TheFile=File.Item(ReImg)
Si TheFile.Belong <> ReBel Entonces
ElArchivo.Belong=ElArchivo.Belong&"|"&Rebel
Terminar si
Demás
Si (Lista=0 Y Chk =0) O (Lista=1 Y Chk=-1) O (Lista=2 Y Chk=1) O Lista=3 Entonces
Establecer TheFile = Nueva información de archivo
TheFile.FileName=Reimg
TheFile.Belong=Rebelde
TheFile.Exists = Comprobar
Archivo.Agregar ReImg,ElArchivo
Seleccione el tipo de escaneo de caso
Caso 1 Imágenes=Imágenes+1
Caso 2 DbImg = DbImg+1
Caso más
Si AddNum = 0 Entonces
DbImg = DbImg+1
Demás
Imágenes=Imágenes+1
Terminar si
Finalizar selección
Terminar si
Terminar si
End Sub
Private Function GetPath(Str) 'Obtener la ruta del archivo
'respuesta.escribir cadena&"<br>"
Temperatura tenue, EndB
Temp=Reemplazar(Str,"/","")
FinB=InstrRev(Temp,"")
Si EndB = 0 entonces
GetPath=SPath
Demás
GetPath=Izquierda(Temp,EndB)
Terminar si
'respuesta.escribir GetPath&"<BR>"
Función final
Función privada GetFn(Str) 'Obtiene el nombre de ruta relativa del archivo
Temperatura baja
Temperatura=Fuente
'respuesta.escribir temp&"<br>"
Temp=Reemplazar(Str,SPath,"")
Temp=Reemplazar(Temp,"","/")
ObtenerFn=Temp
Función final
Clase final
Clase Información de archivo
Dim Nombre de archivo, Pertenece, Existe
Subclase privada_Inicializar
Nombre de archivo=""
pertenecer=""
Existe=""
Fin sub
Clase final
%>
Ejemplos de aplicación
< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transicional//EN" " http://www.w3.org/TR/html4/loose.dtd ">
<%
%>
<html>
<cabeza>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
<título>Documento sin título</título>
<enlace rel="hoja de estilo" href="css.css">
</cabeza>
<cuerpo>
<nombre del formulario="form1" método="publicar" acción="scan.asp">
<table width="60%" border="0" align="center" cellspaceing="1" bgcolor="#003366">
<trbgcolor="#FFFFFF">
<td height="30" colspan="2" bgcolor="#00CCFF"><div align="center">Escanear imagen</div></td>
</tr>
<trbgcolor="#FFFFFF">
<td width="26%" height="20"><div align="right">Carpeta de escaneo:</div></td>
<td width="74%" height="20"><seleccione nombre="Ruta" id="Ruta">
<opción valor="/">/</opción>
<%
tenue fso,f,fd,p
p=servidor.MapPath("/")
establecer fso=Server.CreateObject("Scripting.FileSystemObject")
función mostrar ruta (cadena)
establecer f=fso.getfolder(cadena)
establecer fd=f.subcarpetas
para cada fds en fd
Respuesta.Escribir "<opción valor="&Reemplazar(Reemplazar(fds,p,""),"","/")&">"&Reemplazar(Reemplazar(fds,p,""),""," /")&"</opción>"
establecer ff=fso.getfolder(fds)
establecer ffd=ff.subcarpetas
si ffd.count>0 entonces
ruta de presentación (fds)
terminar si
próximo
función final
ruta de presentación(p)%>
</select></td>
</tr>
<trbgcolor="#FFFFFF">
<td height="20"><div align="right">Tipo de escaneo: </div></td>
<td altura="20"><tipo de entrada="radio" nombre="SType" valor="0">
todo
<nombre de entrada="SType" tipo="radio" valor="1" marcado>
escanear archivos
<tipo de entrada="radio" nombre="SType" valor="2">
Escanear base de datos</td>
</tr>
<trbgcolor="#FFFFFF">
<td height="20"><div align="right">Tipo de visualización:</div></td>
<td height="20"><nombre de entrada="LType" tipo="radio" valor="0" marcado>
Inválido
<tipo de entrada="radio" nombre="LType" valor="1">
ruta de red
<tipo de entrada="radio" nombre="LType" valor="2">
eficiente
<tipo de entrada="radio" nombre="LType" valor="3">
Todo</td>
</tr>
<trbgcolor="#FFFFFF">
<td height="20"><div align="right">Tipo de archivo: </div></td>
<td height="20"><nombre de entrada="Ext" tipo="casilla de verificación" id="Ext" valor="asp" marcado>
Áspid
<nombre de entrada="Ext" tipo="casilla de verificación" id="valor Ext"="htm" marcado>
htm
<nombre de entrada="Ext" tipo="casilla de verificación" id="valor Ext"="html" marcado>
HTML
<nombre de entrada="Ext" tipo="casilla" id="Ext" valor="inc" marcado>
Inc</td>
</tr>
<trbgcolor="#FFFFFF">
<td height="20"><div align="right">Base de datos:</div></td>
<td height="20">Tabla:
<nombre de entrada="Tab" tipo="texto" id="Tab" tamaño="5" clase="allinput">
Columna de identificación de imagen:
<nombre de entrada="ColID" tipo="texto" id="ColID" tamaño="5" clase="allinput">
Columna de ruta de imagen:
<entrada nombre="ColImg" tipo="texto" id="ColImg" tamaño="5" clase="allinput"> </td>
</tr>
<trbgcolor="#FFFFFF">
<td altura="40" colspan="2"><div align="centro">
<tipo de entrada="enviar" valor="Iniciar escaneo" clase="allinput">
</div></td>
</tr>
</tabla>
</formulario>
</cuerpo>
</html>
escanear.asp
<!--#include file="scan.inc"-->
<%
tenue mcs, fn, fb
%>
<enlace href="css.css" rel="hoja de estilo">
<table width="70%" border="0" align="center" cellpadding="5" cellpacing="1" bgcolor="#003366">
<tr bgcolor="#AAAAFF">
<td width="30%" height="30">Nombre de la imagen</td>
<td width="39%" height="30">Ubicación</td>
<td ancho="31%" alto="30">válido</td>
</tr>
<%
Función GetVar(ID,predeterminado)
GetVar = Predeterminado
Si Solicitud (ID) <> "" Entonces
GetVar = Solicitud(ID)
Fin SI
Función final
Tipo de atenuación, tipo L, ruta, ext, conexión, tabulación, ID de col, ColImg
SType=GetVar("SType",1)
TipoL=GetVar("TipoL",3)
Ruta=GetVar("Ruta","/")
Ext = Recortar(Reemplazar(GetVar("Ext","htm,html,asp,inc"),", ","/"))
Conexión=GetVar("Conexión","")
Tabulador=GetVar("Tabulador","")
ColID=GetVar("ColID","")
ColImg=GetVar("ColImg","")
Conn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("/db1.mdb")
establecer mcs = nuevo mcscanimg
mcs.ScanType=Tipo
mcs.list=LTipo
mcs.ScanText=Ext
mcs.conn=Conexión
mcs.Path=Ruta
mcs.table=Pestaña
mcs.ColID=ColID
mcs.ColImg=ColImg
mcs.scan()
para cada fn en mcs.file
establecer fb=mcs.file(fn)
%>
<trbgcolor="#FFFFFF">
<td valign="top"><%=fb.filename%></td>
<td><%=Reemplazar(fb.Belong,"|","<br>")%></td>
<td><%
si fb.Exists=1 entonces
respuesta.Escribe "ruta válida"
elseif fb.exists=0 entonces
respuesta.Escribe "Ruta no válida"
demás
respuesta.Escribe "ruta no local"
terminar si
%></td>
</tr>
<%
próximo
%>
<trbgcolor="#FFFFFF">
<td colspan="3">Total de archivos escaneados: <%=mcs.files%>; Carpetas escaneadas: <%=mcs.folders%>; Tamaño total: <%=mcs.totalsize%><br>Imágenes escaneadas Número : <%=mcs.images&"; Número de imágenes de la base de datos: "&mcs.dbimg&"; Número total de imágenes: "&mcs.TotalImg%>; Número de fallas: <%=mcs.exists%><br>Tiempo de ejecución: <%=mcs.runtime%>milisegundos</td>
</tr>
</tabla>
<%set mcs=nada%>