Pindai.inc
<%
'Penjelasan: Ini pertama kalinya saya menulis kelas lamaran. Tolong beri tahu saya jika ada yang tidak pantas! QQ: 1168064
'Properti dan metode
'1. ScanType: Jenis pemindaian. Nilai bawaan: 1. Nilai: 0 memindai file dan database 1 memindai file 2 memindai database.
'2. Conn, Table, ColImg, ColID: digunakan saat memindai database, masing-masing string koneksi, nama tabel, nama kolom gambar, dan nama kolom ID yang sesuai dengan gambar.
'3. Daftar: jenis tampilan. Nilai bawaan: 0. Nilai: 0 gambar tidak valid 1 gambar jaringan 2 gambar valid 3 semuanya
'4. ScanText: Jenis gambar yang dipindai. Nilai default: Asp/html/htm. Nilai: Ekstensi file, dipisahkan dengan "/".
'5. Jalur: Jalur yang dipindai: Defaultnya adalah direktori root situs web, silakan gunakan jalur relatif. Misalnya "/dsj"
'6. Pindai(): metode. Pindai sesuai pengaturan
'7. File: Menyimpan semua informasi yang dipindai. Dipanggil setelah metode Scan()
'8. Folder: Jumlah folder yang dipindai
'9. File: Jumlah file yang dipindai.
'10.TotalSize: Ukuran total direktori. G, M, B ditampilkan secara otomatis.
'11. Gambar: Jumlah gambar dalam file yang dipindai
'12. Ada: jumlah kegagalan
'13.DbImg: Jumlah gambar dalam database
'14.TotalImg: Jumlah gambar yang dipindai
'15. RunTime: Waktu proses pemindaian. Satuan milidetik
'16. Mengenai penggunaan Berkas:
' Untuk Setiap Fn Di ObjName.file ...... Selanjutnya
'Fn.FileName: Nama gambar, termasuk jalur
' Fn.Belong : file atau database tempat gambar berada (file dipisahkan dengan tanda "|")
'Fn.Exists: apakah itu valid. 0 berarti tidak valid, 1 berarti valid - 1 berarti jalur non-lokal dan tidak dapat dinilai.
Opsi Eksplisit
KelasMCScanImg
redupkan File,ScanType,Conn,Table,ColId,ColImg,FSO,Path,List,ScanText,Spath,Versi
redupkan Folder, File, Ukuran Total, Gambar, Ada, sFiles, Mulai, EndT, RunTime, DbImg, TotalImg, Filter
Sub Kelas Pribadi_Inisialisasi
Set File = Server.Createobject("Scripting.Dictionary")
Setel FSO = CreateObject("Scripting.FileSystemObject")
Tipe Pemindaian=1
Sambung = ""
Tabel = ""
KolImg=""
ColId=""
Jalur="/"
sPath = Server.MapPath("/")
Daftar=0
ScanTeks="asp/htm/html"
Folder=0
File=0
Ukuran Total=0
Gambar=0
DBImg=0
Ada=0
sFile=0
TotalImg=0
Mulai = Pengatur Waktu
Akhir=Pengatur Waktu
Waktu proses=0
Filter="src=(.[^>^&]*)(.gif|.jpg)"
Versi = "1.00"
Akhiri Sub
Privat Sub Kelas_Terminate
Atur File=Tidak Ada
Tetapkan FSO = Tidak Ada
Akhiri Sub
Fungsi Publik Scan() 'Mulai pemindaian
jika kiri(jalur,1)="/" maka
jalur=Spath&Ganti(jalur,"/","")
kalau tidak
Jalur=Spath&""&Ganti(jalur,"/","")
berakhir jika
Jika ScanType=1 maka
Pindai file (Jalur)
ElseIf ScanType=2 Lalu
PindaiDb()
Kalau tidak
PindaiFile(Jalur)
PindaiDb()
Akhiri Jika
AkhirT=pengatur waktu
RunTime=FormatNumber(EndT-Mulai)*1000
Ukuran Total=shb(Ukuran Total)
TotalImg=DbImg+Gambar
Akhir Fungsi
Private Sub ScanDB() 'Pindai database. Path disini sulit ditentukan, silahkan diubah di InsDb (setelah If AddNum=0)
Redupkan Rs,RetStr,ReBel,SQL
SQL="Pilih "&ColID&",,"&ColIMG&" Dari "&Table&" Pesan berdasarkan "&ColID&" DESC"
'Pada Kesalahan Lanjutkan Berikutnya
Jika Conn = "" OR Table = "" OR ColID = "" OR ColIMG = "" Lalu
Keluar dari Sub
Kalau tidak
Setel Rs = Server.CreateObject("ADODB.RecordSet")
Rs.Open SQL,sambungan,3,3
Sementara Bukan Rs.EOF
RetStr=Rs(1)
Kolom ReBel="&ColImg&" pada tabel "&Tabel&" (ID: "&Rs(0)&")"
InsDb RetStr,ReBel,0,""
Rs.MoveNext
Pergi ke
Rs.Tutup
Tetapkan Rs=Tidak Ada
Akhiri Jika
Akhiri Sub
Pribadi Sub ScanFile(PathStr) 'Pindai file. rekursi
Redupkan f,ff,fn,fd,fdn,RealPath,fr,fc
'Respon.tulis PathStr&"<br>"
Setel ff = fso.getfolder(pathstr)
Atur f = ff.files
Setel fd = ff.subfolder
Jika f.Hitung >0 Lalu
Untuk Setiap fn Di f
File=File+1
TotalUkuran=UkuranTotal+fn.Ukuran
Jika ChkFileName(fn.Name) Lalu
sFile=sFile+1
Jika Benar(PathStr,1) <> "" Lalu
RealPath=PathStr&""&fn.Nama
Kalau tidak
RealPath=PathStr&fn.Nama
Akhiri Jika
Setel fr = FSO.OpenTextFile(RealPath,1)
fc=fr.BacaSemua
'response.tulis RealPath&"<br>"
Filter RegExpTest,fc,RealPath
Akhiri Jika
Berikutnya
Selesai Jika
Jika fd.Count> 0 Lalu
Untuk Setiap fdn Di fd
Folder=Folder+1
suhu redup
jika benar (PathStr,1) <> "" maka
temp=PathStr&""&fdn.Nama
kalau tidak
temp=PathStr&fdn.Nama
berakhir jika
PindaiFile(temp)
Berikutnya
Akhiri Jika
Akhiri Sub
Pribadi Sub RegExpTest(Patrn, Strng,PathStr) 'Temukan gambar
Redupkan RegEx, Cocokkan, Cocok, Chk, ReImg, RetStr, ReBel, TheFile
Tetapkan RegEx = RegExp Baru
RegEx.Pattern = Pola
RegEx.IgnoreCase = Benar
RegEx.Global = Benar
Setel Kecocokan = RegEx.Execute(Strng)
Untuk Setiap Pertandingan dalam Pertandingan
RetStr = Ganti(Match.Value,"src=","")
RetStr = Ganti(RetStr,"'","")
RetStr = Ganti(RetStr,"""","")
Chk = 0
Pemberontak=GetFn(PathStr)
InsDb RetStr,ReBel,1,PathStr
Berikutnya
Akhiri Sub
Fungsi Pribadi GetExt(FullPath) 'Dapatkan ekstensi file, digunakan untuk menentukan apakah itu jenis file yang dipindai
Suhu redup
Jika FullPath <> "" Lalu
Temp = Pertengahan(FullPath,InStrRev(FullPath, "")+1)
Jika InStr(Temp,".")>0 Lalu
GetExt=Pertengahan(Temp,InStrRev(Temp, ".")+1)
Kalau tidak
GetExt=Temp
Akhiri Jika
Kalau tidak
GetExt = ""
Akhiri Jika
Fungsi Akhir
Fungsi Pribadi ChkFileName(Str) 'Mendeteksi apakah file tersebut adalah jenis file yang akan dipindai
Redupkan ar,i,fn
fn=GetExt(str)
ar=Pisahkan(ScanTeks,"/")
ChkFileName=Salah
Untuk i=0 Ke ubound(ar)
Jika lCase(fn) =lCase(Trim(ar(i))) Maka
ChkFileName=Benar
Fungsi Keluar
Akhiri Jika
Berikutnya
Fungsi Akhir
Fungsi Pribadi shb(n) 'Menampilkan jumlah byte
Jika n<1024 Maka
shb = n&"bita"
ElseIf n>1024 dan n<1024*1024 Lalu
shb = formatangka(n/1024,2)&"K"
ElseIf n>=1024*1024 dan n <1024*1024*1024 Maka
shb = formatangka(n/(1024*1024),2)&"M"
Kalau tidak
shb =formatangka(n/(1024*1024*1024),2)&"G"
Akhiri Jika
End Function
Private Sub InsDb(RetStr,ReBel,AddNum,PathStr) 'Analisis apakah gambar tersebut valid dan tambahkan ke objek kamus
redupkan chk,ReImg,TheFile
Jika InStr(RetStr," http://")>0 ATAU Instr(RetStr," ftp://")>0 Lalu
ReImg=RetStr
Chk=-1
Kalau tidak
RetStr = Ganti(RetStr,"/","")
Jika (Kiri(RetStr,1) = "" ) Lalu
RetStr=SPath&Retstr
ElseIf Left(RetStr,3) = ".." Lalu
suhu redup
suhu=GetPath(PathStr)
Lakukan Hingga Kiri(RetStr,3) <> ".." 'Tangani jalur relatif
Temp=Fso.GetParentFolderName(Temp)
RetStr=Tengah(RetStr,4,len(RetStr)-3)
Lingkaran
RetStr=Temp&""&RetStr
Kalau tidak
Jika AddNum=0 Maka
jika kiri(RetStr,1)="" lalu
RetStr=Jalur&""&Retstr
Kalau tidak
RetStr=jalur&Retstr
Akhiri Jika
kalau tidak
RetStr=getpath(Pathstr)&RetStr
Akhir JIKA
Akhiri Jika
Jika FSO.FileExists(RetStr) Lalu
Chk=1
Akhiri Jika
ReImg=DapatkanFn(RetStr)
Akhiri Jika
Jika Chk=0 Maka
Ada=Ada+1
Berakhir jika
Jika File.Exists(ReImg) maka
Setel File=File.Item(ReImg)
Jika TheFile.Belong <> ReBel Lalu
TheFile.Belong=TheFile.Belong&"|"&Rebel
Akhiri Jika
Kalau tidak
Jika (Daftar=0 DAN Chk =0) OR (Daftar=1 Dan Chk=-1) Atau (Daftar=2 Dan Chk=1 ) Atau Daftar=3 Maka
Setel TheFile= Info File Baru
File.NamaFile=ReImg
TheFile.Belong=Pemberontak
TheFile.Exists=Chk
File.Tambahkan ReImg,TheFile
Pilih Tipe Pemindaian Kasus
Kasus 1 Gambar=Gambar+1
Kasus 2 DbImg = DbImg+1
Kasus Lain
Jika AddNum = 0 Maka
DbImg = DbImg+1
Kalau tidak
Gambar=Gambar+1
Akhiri Jika
Pilihan Akhir
Akhiri Jika
Akhiri Jika
Akhiri Sub
Fungsi Pribadi GetPath(Str) 'Dapatkan jalur file
'respons.tulis str&"<br>"
Suhu Redup,AkhirB
Temp=Ganti(Str,"/","")
EndB=InstrRev(Temp,"")
Jika UjungB = 0 Maka
DapatkanPath=SPath
Kalau tidak
GetPath=Kiri(Temp,EndB)
Akhiri Jika
'respons.tulis GetPath&"<BR>"
Fungsi Akhir
Fungsi Pribadi GetFn(Str) 'Dapatkan nama jalur relatif file
Suhu redup
Suhu=Str
'response.tulis suhu&"<br>"
Suhu=Ganti(Str,SPath,"")
Temp=Ganti(Temp,"","/")
DapatkanFn=Temp
Fungsi Akhir
Kelas Akhir
FileInfo Kelas
Meredupkan Nama File, Milik, Ada
Sub Kelas_Inisialisasi Pribadi
Nama File=""
Milik = ""
Ada=""
Akhir sub
Akhir Kelas
%>
Contoh aplikasi
< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transisi//EN" " http://www.w3.org/TR/html4/loose.dtd ">
<%
%>
<html>
<kepala>
<meta http-equiv="Jenis Konten" content="teks/html; charset=gb2312">
<title>Dokumen Tanpa Judul</title>
<link rel="stylesheet" href="css.css">
</kepala>
<tubuh>
<form name="form1" method="post" action="scan.asp">
<tabel lebar="60%" border="0" align="center" Cellspacing="1" bgcolor="#003366">
<tr bgcolor="#FFFFFF">
<td height="30" colspan="2" bgcolor="#00CCFF"><div align="center">Pindai gambar</div></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="26%" height="20"><div align="right">Pindai folder:</div></td>
<td width="74%" height="20"><pilih nama="Jalur" id="Jalur">
<nilai opsi="/">/</option>
<%
redup fso,f,fd,p
p=server.Jalur Peta("/")
set fso=Server.CreateObject("Scripting.FileSystemObject")
fungsi jalur pertunjukan(str)
atur f=fso.getfolder(str)
atur fd=f.subfolder
untuk setiap fds di fd
Respon.Tulis "<option value="&Replace(Replace(fds,p,""),"","/")&">"&Replace(Replace(fds,p,""),""," /")&"</opsi>"
atur ff=fso.getfolder(fds)
atur ffd=ff.subfolder
jika ffd.count>0 maka
jalur pertunjukan (fds)
berakhir jika
Berikutnya
fungsi akhir
jalur pertunjukan(p)%>
</pilih></td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Jenis pemindaian: </div></td>
<td height="20"><input type="radio" name="SType" value="0">
semua
<input nama="SType" type="radio" value="1" dicentang>
Pindai file
<masukan tipe='radio' nama='SType' nilai='2'>
Pindai basis data</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Jenis tampilan:</div></td>
<td height="20"><input name="LType" type="radio" value="0" dicentang>
Tidak sah
<masukan tipe='radio' nama='LType' nilai='1'>
jalur jaringan
<masukan tipe='radio' nama='LType' nilai='2'>
efisien
<masukan tipe='radio' nama='LType' nilai='3'>
Semua</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Jenis berkas: </div></td>
<td height="20"><input name="Ext" type="checkbox" id="Ext" value="asp" dicentang>
Asp
<input nama="Ext" type="checkbox" id="Ext" value="htm" dicentang>
Htm
<input nama="Ext" type="checkbox" id="Ext" value="html" dicentang>
HTML
<input nama="Ext" type="checkbox" id="Ext" value="inc" dicentang>
Inc.</td>
</tr>
<tr bgcolor="#FFFFFF">
<td height="20"><div align="right">Database:</div></td>
<td height="20">Tabel:
<input nama="Tab" type="text" id="Tab" size="5" class="allinput">
Kolom ID Gambar:
<input nama="ColID" type="text" id="ColID" size="5" class="allinput">
Kolom jalur gambar:
<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="kirim" value="Mulai Pemindaian" class="allinput">
</div></td>
</tr>
</tabel>
</bentuk>
</tubuh>
</html>
scan.asp
<!--#termasuk file="scan.inc"-->
<%
redupkan mcs,fn,fb
%>
<link href="css.css" rel="stylesheet">
<tabel lebar = "70%" border = "0" align = "center" cellpadding = "5" Cellspacing = "1" bgcolor = "#003366">
<tr bgcolor="#AAAAFF">
<td width="30%" height="30">Nama gambar</td>
<td width="39%" height="30">Lokasi</td>
<td width="31%" height="30">valid</td>
</tr>
<%
Fungsi GetVar(ID,Default)
DapatkanVar = Default
Jika Permintaan(ID) <> "" Lalu
GetVar = Permintaan(ID)
Akhir JIKA
Fungsi Akhir
Redupkan SType,LType,Path,Ext,Conn,Tab,ColID,ColImg
SType=GetVar("SType",1)
LType=GetVar("LType",3)
Jalur=GetVar("Jalur","/")
Ext = Pangkas(Ganti(GetVar("Ext","htm,html,asp,inc"),", ","/"))
Sambungan=GetVar("Sambungan","")
Tab=GetVar("Tab","")
ColID=GetVar("ColID","")
ColImg=GetVar("ColImg","")
Sambungan="Penyedia=Microsoft.Jet.OLEDB.4.0;Sumber Data="&Server.MapPath("/db1.mdb")
setel mcs= mcscanimg baru
mcs.ScanType=SType
mcs.list=LJenis
mcs.ScanText=Ext
mcs.sambungan=Samb
mcs.Jalur=Jalur
mcs.tabel=Tab
mcs.ColID=ColID
mcs.ColImg=ColImg
mcs.scan()
untuk setiap fn di mcs.file
atur fb=mcs.file(fn)
%>
<tr bgcolor="#FFFFFF">
<td valign="top"><%=fb.namafile%></td>
<td><%=Ganti(fb.Belong,"|","<br>")%></td>
<td><%
jika fb.Exists=1 maka
respon.Tulis "jalur yang valid"
elseif fb.exists=0 maka
respon.Tulis "Jalur tidak valid"
kalau tidak
respon.Tulis "jalur non-lokal"
berakhir jika
%></td>
</tr>
<%
Berikutnya
%>
<tr bgcolor="#FFFFFF">
<td colspan="3">Total file yang dipindai: <%=mcs.files%>; Folder yang dipindai: <%=mcs.folders%>; Ukuran total: <%=mcs.totalsize%><br>Gambar yang dipindai Nomor : <%=mcs.images&"; Jumlah gambar database: "&mcs.dbimg&"; Jumlah total gambar: "&mcs.TotalImg%>; Jumlah kegagalan: <%=mcs.exists%><br>Waktu berjalan : <%=mcs.runtime%>milidetik</td>
</tr>
</tabel>
<%set mcs=tidak ada%>