سكان.ينك
<%
'شرح: هذه هي المرة الأولى التي أقوم فيها بكتابة فصل دراسي للتطبيق، من فضلك أخبرني إذا كان هناك أي شيء غير مناسب! س: 1168064
"الخصائص والأساليب
'1.نوع المسح: نوع المسح. القيمة الافتراضية: 1. القيم: 0 يقوم بفحص الملفات وقواعد البيانات 1 يقوم بفحص الملفات 2 يقوم بفحص قواعد البيانات.
'2.Conn، Table، ColImg، ColID: يُستخدم عند فحص قاعدة البيانات، على التوالي، سلسلة الاتصال واسم الجدول واسم عمود الصورة واسم عمود المعرف المطابق للصورة.
'3. القائمة: نوع العرض. القيمة الافتراضية: 0. القيمة: 0 صورة غير صالحة 1 صورة الشبكة 2 صورة صالحة 3 الكل
'4.ScanText: نوع الصورة الممسوحة ضوئيًا. القيمة الافتراضية: Asp/html/htm. القيمة: امتداد الملف، مفصولاً بـ "/".
'5. المسار: المسار الذي تم فحصه: الافتراضي هو الدليل الجذر لموقع الويب، يرجى استخدام المسارات النسبية. على سبيل المثال "/ دي اس جي"
'6. المسح (): الطريقة. المسح وفقا للإعدادات
'7. الملف: احفظ جميع المعلومات الممسوحة ضوئيًا. يتم استدعاؤه بعد طريقة Scan()
'8 المجلدات: عدد المجلدات التي تم فحصها
'9. الملفات: عدد الملفات الممسوحة ضوئيًا.
'10.الحجم الإجمالي: الحجم الإجمالي للدليل. يتم عرض G وM وB تلقائيًا.
'11. الصور: عدد الصور في الملف الممسوح ضوئيًا
'12. موجود: عدد حالات الفشل
'13.DbImg: عدد الصور في قاعدة البيانات
'14.TotalImg: عدد الصور الممسوحة ضوئيًا
'15. وقت التشغيل: وقت عملية المسح. وحدة ميلي ثانية
'16. فيما يتعلق باستخدام الملف:
' لكل Fn في ObjName.file …… التالي
'Fn.FileName: اسم الصورة، بما في ذلك المسار
'Fn.Belong: الملف أو قاعدة البيانات التي توجد بها الصورة (يتم فصل الملفات بـ "|")
'Fn.موجود: ما إذا كان صالحًا أم لا. 0 يعني غير صالح، 1 يعني صالح - 1 يعني مسار غير محلي ولا يمكن الحكم عليه.
الخيار صريح
ClassMCScanImg
ملف خافت، نوع المسح، كون، الجدول، ColId، ColImg، FSO، المسار، القائمة، ScanText، Spath، الإصدار
المجلدات الخافتة، الملفات، الحجم الإجمالي، الصور، موجود، ملفات s، البدء، EndT، وقت التشغيل، DbImg، TotalImg، عامل التصفية
فئة فرعية خاصة_تهيئة
تعيين الملف = Server.Createobject("Scripting.Dictionary")
تعيين FSO = CreateObject("Scripting.FileSystemObject")
نوع المسح=1
كون = ""
الجدول = ""
كوليمج = ""
معرف العمود = ""
المسار = "/"
sPath = Server.MapPath("/")
القائمة=0
نص المسح = "asp/htm/html"
المجلدات=0
الملفات=0
الحجم الإجمالي = 0
الصور=0
ديبي إمج = 0
موجود=0
الملفات = 0
إجمالي الصورة = 0
ابدأ=المؤقت
Endt=المؤقت
وقت التشغيل = 0
عامل التصفية = "src=(.[^>^&]*)(.gif|.jpg)"
الإصدار = "1.00"
نهاية
الفئة الفرعية الخاصة_Terminate
تعيين الملف = لا شيء
تعيين FSO = لا شيء
End Sub
Public Function Scan() 'ابدأ المسح
إذا بقي (المسار،1) = "/" ثم
المسار=Spath&Replace(المسار،"/"،"،")
آخر
Path=Spath&""&Replace(path,"/"،"")
نهاية إذا
إذا كان ScanType=1 إذن
ملف المسح (المسار)
ElseIf ScanType=2 إذن
سكاندب ()
آخر
ملف المسح (المسار)
سكاندب ()
نهاية إذا
EndT=المؤقت
RunTime=FormatNumber(EndT-Start)*1000
الحجم الإجمالي = shb(الحجم الإجمالي)
TotalImg=DbImg+Images
وظيفة النهاية
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
ريتستر = روبية (1)
عمود ReBel="&ColImg&" في الجدول "&Table&" (المعرف: "&Rs(0)&")"
InsDb ريتستر، ريبيل، 0، ""
Rs.MoveNext
ويند
إغلاق
تعيين روبية = لا شيء
نهاية إذا
End Sub
Private Sub ScanFile(PathStr) 'قم بمسح الملف ضوئيًا. العودية
Dim f,ff,fn,fd,fdn,RealPath,fr,fc
'Response.write PathStr&"<br>"
تعيين وما يليها = fso.getfolder(pathstr)
تعيين و = ff.files
تعيين fd = ff.subfolders
إذا f.Count >0 ثم
لكل fn في f
ملفات=ملفات+1
TotalSize=TotalSize+fn.Size
إذا كان ChkFileName(fn.Name) ثم
sFiles=sFiles+1
إذا كان Right(PathStr,1) <> "" إذن
RealPath=PathStr&""&fn.Name
آخر
RealPath=PathStr&fn.Name
نهاية إذا
تعيين الاب = FSO.OpenTextFile(RealPath,1)
fc=fr.ReadAll
'response.write RealPath&"<br>"
مرشح RegExpTest، fc، RealPath
نهاية إذا
التالي
إنهاء إذا
كان fd.Count> 0 ثم
لكل fdn في fd
المجلدات=المجلدات+1
درجة الحرارة الخافتة
إذا كان صحيحًا (PathStr,1) <> "" إذن
temp=PathStr&""&fdn.Name
آخر
temp=PathStr&fdn.Name
نهاية إذا
ملف المسح (درجة الحرارة)
التالي
نهاية إذا
End Sub
Private Sub RegExpTest(Patrn, Strng,PathStr) 'البحث عن الصور
Dim RegEx، Match، Matches، Chk، ReImg، RetStr، ReBel، TheFile
قم بتعيين RegEx = New RegExp
RegEx.Pattern = النمط
RegEx.IgnoreCase = صحيح
RegEx.Global = صحيح
تعيين التطابقات = RegEx.Execute(Strng)
لكل مباراة في المباريات
RetStr = استبدال (Match.Value، "src = "،")
RetStr = استبدال(RetStr،"'"،")
RetStr = استبدال(RetStr،""""،")
تشك = 0
ReBel=GetFn(PathStr)
InsDb RetStr,ReBel,1,PathStr
التالي
End Sub
Private Function GetExt(FullPath) 'احصل على امتداد الملف، المستخدم لتحديد ما إذا كان نوع ملف تم فحصه أم لا
درجة الحرارة الخافتة
إذا كان FullPath <> "" إذن
درجة الحرارة = منتصف (FullPath،InStrRev (FullPath، "")+1)
إذا كان InStr(Temp,".")>0 إذن
GetExt=Mid(Temp,InStrRev(Temp, ".")+1)
آخر
GetExt=درجة الحرارة
نهاية إذا
آخر
جيتكست = ""
نهاية إذا
وظيفة النهاية
وظيفة خاصة ChkFileName(Str) 'اكتشاف ما إذا كان الملف هو نوع الملف الذي سيتم فحصه أم لا
خافت ع، ط، fn
fn=GetExt(str)
ar=Split(ScanText,"/")
ChkFileName=خطأ
لأني=0 إلى ubound(ar)
إذا كان lCase(fn) =lCase(Trim(ar(i))) إذن
ChkFileName = صحيح
وظيفة الخروج
نهاية إذا
التالي
وظيفة النهاية
الخاصة الوظيفة shb(n) 'عرض عدد البايتات
إذا ن <1024 ثم
shb = n&"بايت"
ElseIf n>1024 و n<1024*1024 ثم
shb = رقم التنسيق(n/1024,2)&"K"
ElseIf n>=1024*1024 و n <1024*1024*1024 ثم
shb = رقم التنسيق(n/(1024*1024),2)&"M"
آخر
shb =formatnumber(n/(1024*1024*1024),2)&"G"
نهاية إذا
وظيفة النهاية
Private 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)
افعل حتى اليسار (RetStr,3) <> ".." 'التعامل مع المسارات النسبية
Temp=Fso.GetParentFolderName(Temp)
RetStr=Mid(RetStr,4,len(RetStr)-3)
حلقة
RetStr=Temp&""&RetStr
آخر
إذا AddNum = 0 ثم
إذا بقي (RetStr،1) = "" ثم
RetStr=Path&""&Retstr
آخر
RetStr=path&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 And Chk=-1) أو (List=2 And Chk=1) أو List=3 إذن
اضبط TheFile= New FileInfo
TheFile.FileName=ReImg
TheFile.Belong=ReBel
TheFile.Exists=Chk
File.Add 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
درجة الحرارة = استبدال (سلسلة، "/"، "")
EndB=InstrRev(Temp,"")
إذا كان EndB = 0 إذن
GetPath=SPath
آخر
GetPath=يسار(درجة الحرارة، EndB)
نهاية إذا
'response.write GetPath&"<BR>"
وظيفة النهاية
الوظيفة الخاصة GetFn(Str) 'احصل على اسم المسار النسبي للملف
درجة الحرارة الخافتة
درجة الحرارة = شارع
'response.write temp&"<br>"
درجة الحرارة = استبدال (سلسلة، SPath، "")
درجة الحرارة = استبدال (درجة الحرارة، ""، "/")
GetFn=درجة الحرارة
وظيفة النهاية
فئة النهاية
معلومات الملف
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 ">
<%
%>
<أتش تي أم أل>
<الرأس>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>مستند بدون عنوان</title>
<link rel="stylesheet" href="css.css">
</الرأس>
<الجسم>
<اسم النموذج = "form1" طريقة = "post" action = "scan.asp">
<عرض الجدول = "60%" الحدود = "0" محاذاة = "المركز" تباعد الخلايا = "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"><اختر name="Path" id="Path">
<option value="/">/</option>
<%
خافت fso، f، fd، p
p=server.MapPath("/")
set fso=Server.CreateObject("Scripting.FileSystemObject")
مسار عرض الدالة (شارع)
تعيين f=fso.getfolder(str)
تعيين fd=f.subfolders
لكل fds في fd
Response.Write "<option value="&Replace(Replace(fds,p,""),""،/")&">"&Replace(Replace(fds,p,"")"،""، /")&"</option>"
تعيين وما يليها=fso.getfolder(fds)
تعيين ffd=ff.subfolders
إذا ffd.count>0 ثم
مسار العرض (فدس)
نهاية إذا
التالي
وظيفة النهاية
مسار العرض (ع)٪>
</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 = "قيمة الراديو" = "1" محدد>
مسح الملفات
<نوع الإدخال = "راديو" اسم = "قيمة SType" = "2">
مسح قاعدة البيانات</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">نوع العرض:</div></td>
<td height="20"><اسم الإدخال = "LType" type = "قيمة الراديو" = "0" محدد>
غير صالح
<نوع الإدخال = "الراديو" اسم = "LType" القيمة = "1">
مسار الشبكة
<نوع الإدخال = "الراديو" اسم = "LType" القيمة = "2">
فعال
<نوع الإدخال = "الراديو" اسم = "LType" القيمة = "3">
الكل</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">نوع الملف: </div></td>
<td height = "20"> <اسم الإدخال = "Ext" type = "checkbox" id = "قيمة Ext" = "asp" محددة>
أسب
<اسم الإدخال = "Ext" type = "checkbox" id = "Ext" value = "htm" محدد>
هتم
<اسم الإدخال = "Ext" type = "checkbox" id = "Ext" value = "html" محدد>
أتش تي أم أل
<اسم الإدخال = "Ext" type = "checkbox" id = "Ext" value = "inc" محدد>
شركة</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">قاعدة البيانات:</div></td>
<td height="20">الجدول:
<اسم الإدخال = "علامة التبويب" نوع = "نص" معرف = "علامة التبويب" الحجم = "5" فئة = "allinput">
عمود معرف الصورة:
<اسم الإدخال = "ColID" نوع = "نص" معرف = "ColID" حجم = "5" فئة = "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>
scan.asp
<!--#include file="scan.inc"-->
<%
خافت mcs، fn، fb
%>
<link href="css.css" rel="stylesheet">
<عرض الجدول = "70%" الحدود = "0" محاذاة = "المركز" خلية الحشو = "5" تباعد الخلايا = "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(المعرف،الافتراضي)
GetVar = افتراضي
إذا كان الطلب (المعرف) <> "" إذن
GetVar = الطلب (المعرف)
نهاية إذا
وظيفة النهاية
خافت نوع، LType، مسار، تحويلة، كون، علامة التبويب، ColID، ColImg
SType=GetVar("SType",1)
LType=GetVar("LType",3)
المسار=GetVar("المسار"،"/")
Ext = Trim(Replace(GetVar("Ext"،"htm,html,asp,inc")"،"، "،"،/"))
كون=GetVar("كون"،"")
Tab=GetVar("علامة التبويب"،"")
ColID=GetVar("ColID"،"")
ColImg=GetVar("ColImg"،"")
Conn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("/db1.mdb")
set mcs=new mcscanimg
mcs.ScanType=SType
mcs.list=LType
mcs.ScanText=ملحق
mcs.conn=Conn
mcs.Path=Path
mcs.table=Tab
mcs.ColID=ColID
mcs.ColImg=ColImg
mcs.scan()
لكل fn في ملف mcs
تعيين fb=mcs.file(fn)
%>
<tr bgcolor="#FFFFFF">
<td valign="top"><%=fb.filename%></td>
<td><%=Replace(fb.Belong,"|"،<br>")%></td>
<TD><%
إذا fb.Exists=1 إذن
استجابة.اكتب "مسار صالح"
elseif fb.exists=0 إذن
استجابة.اكتب "مسار غير صالح"
آخر
استجابة.اكتب "مسار غير محلي"
نهاية إذا
%></تد>
</tr>
<%
التالي
%>
<tr bgcolor="#FFFFFF">
<td colspan="3">إجمالي الملفات الممسوحة ضوئيًا: <%=mcs.files%>; المجلدات الممسوحة ضوئيًا: <%=mcs.folders%>; : <%=mcs.images&"; عدد صور قاعدة البيانات: "&mcs.dbimg&"; إجمالي عدد الصور: "&mcs.TotalImg%>; عدد حالات الفشل: <%=mcs.exists%><br>وقت التشغيل: <%=mcs.runtime%>ملي ثانية</td>
</tr>
</الجدول>
<%set mcs=لا شيء%>