Saya membaca artikel tentang mengunduh gambar dari halaman web. Ia hanya dapat mengunduh gambar dengan header http. Saya melakukan beberapa perbaikan. Ia dapat mengunduh semua sumber koneksi di halaman web dan membuat direktori lokal sesuai dengan struktur direktori di halaman web untuk menyimpan sumber daya.
Kode download.asp
halaman web yang ingin Anda download
adalah sebagai berikut<%
Server.ScriptTimeout=9999
fungsi SaveToFile (dari, ke file)
pada kesalahan lanjutkan berikutnya
redupkan geturl,objStream,imgs
geturl=trim(dari)
Mybyval=getHTTPstr(geturl)
Setel objStream = Server.CreateObject("ADODB.Stream")
objStream.Jenis =1
objStream.Buka
objstream.tulis Mybyval
objstream.SaveToFile ke file,2
objstream.Tutup()
atur objstream=tidak ada
jika err.number<>0 maka err.Clear
fungsi akhir
fungsi geturlencodel(byval url)'Konversi nama file Cina
Redupkan aku, kode
geturlencodel=""
jika trim(Url)="" lalu keluar dari fungsi
untuk i=1 hingga len(Url)
kode=Asc(tengah(Url,i,1))
jika kode<0 Maka kode = kode + 65536
Jika kode>255 Lalu
geturlencodel=geturlencodel&"%"&Kiri(Hex(Kode),2)&"%"&Kanan(Hex(Kode),2)
kalau tidak
geturlencodel=geturlencodel&tengah(Url,i,1)
berakhir jika
Berikutnya
fungsi akhir
fungsi getHTTPage(url)
pada kesalahan lanjutkan berikutnya
redupkan http
atur http=Server.createobject("Msxml2.XMLHTTP")
Http.buka "GET", url, salah
Http.kirim()
jika Http.readystate<>4 lalu keluar dari fungsi
getHTTPPage=bytes2BSTR(Http.responseBody)
atur http=tidak ada
jika err.number<>0 maka err.Clear
fungsi akhir
Fungsi byte2BSTR(vIn)
redupkan strReturn
redupkan saya, ThisCharCode, NextCharCode
strKembali = ""
Untuk i = 1 Ke LenB(vIn)
KodeKar ini = AscB(MidB(vIn,i,1))
Jika ThisCharCode < &H80 Lalu
strReturn = strReturn & Chr(KodeCharIni)
Kalau tidak
KodeChar Berikutnya = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
saya = saya + 1
Akhiri Jika
Berikutnya
bytes2BSTR = strKembali
Fungsi Akhir
fungsi getFileName (nama file byval)
jika instr(nama file,"/")>0 maka
fileExt_a=split(nama file,"/")
getFileName=lcase(fileExt_a(ubound(fileExt_a)))
jika instr(getFileName,"?")>0 lalu
getFileName=kiri(getFileName,instr(getFileName,"?")-1)
berakhir jika
kalau tidak
getFileName=nama file
berakhir jika
fungsi akhir
fungsi getHTTPstr(url)
pada kesalahan lanjutkan berikutnya
redupkan http
atur http=server.buat objek("MSXML2.XMLHTTP")
Http.buka "GET", url, salah
Http.kirim()
jika Http.readystate<>4 lalu keluar dari fungsi
getHTTPstr=Http.responseBody
atur http=tidak ada
jika err.number<>0 maka err.Clear
fungsi akhir
Fungsi CreateDIR(ByVal LocalPath) 'Program untuk membuat direktori. Jika ada beberapa tingkat direktori, buatlah satu per satu.
Pada Kesalahan Lanjutkan Berikutnya
LocalPath = Ganti(LocalPath, "", "/")
Setel FileObject = server.CreateObject("Scripting.FileSystemObject")
patharr = Pisahkan(Jalur Lokal, "/")
path_level = UBound(patharr)
Untuk I = 0 Ke path_level
Jika I = 0 Maka pathtmp = patharr(0) & "/" Lain pathtmp = pathtmp & patharr(I) & "/"
cpath = Kiri(pathtmp, Len(pathtmp) - 1)
Jika Bukan FileObject.FolderExists(cpath) Kemudian FileObject.CreateFolder cpath
Berikutnya
Setel FileObject = Tidak Ada
Jika Err.Number <> 0 Lalu
BuatDIR = Salah
Err. Jelas
Kalau tidak
BuatDIR = Benar
Akhiri Jika
Fungsi Akhir
fungsi GetfileExt (nama file byval)
fileExt_a=split(nama file,".")
GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
fungsi akhir fungsi
getvirtual(str,path,urlhead)
jika kiri(str,7)="http://" maka
url=str
elseif kiri(str,1)="/" lalu
mulai=instrRev(str,"/")
jika mulai=1 maka
url="/"
kalau tidak
url=kiri(str,mulai)
berakhir jika
url=urlhead&url
elseif kiri(str,3)="../" lalu
str1=pertengahan(str,inStrRev(str,"../")+2)
ar=berpisah(str,"../")
lv=ubound(ar)+1
ar=berpisah(jalur,"/")
url="/"
untuk i=1 sampai (ubound(ar)-lv)
url=url&ar(i)
Berikutnya
url=url&str1
url=urlhead&url
kalau tidak
url=urlhead&str
berakhir jika
dapatkanvirtual=url
fungsi akhir
'Contoh kode
redupkan dlpath
virtual="/downweb/"
truepath=server.MapPath(virtual)
jika permintaan("url")<> "" maka
url=permintaan("url")
fn=dapatkanNamaFile(url)
urlhead=kiri(url,(instr(ganti(url,"//",""),"/")+1))
urlpath=ganti(kiri(url,instrRev(url,"/")),urlhead,"")
strKonten = getHTTPHalaman(url)
mystr=strKonten
Setel objRegExp = Regexp Baru
objRegExp.IgnoreCase = Benar
objRegExp.Global = Benar
objRegExp.Pattern = "(src|href)=.[^>]+? "
Tetapkan Kecocokan =objRegExp.Execute(strContent)
Untuk Setiap Pertandingan dalam Pertandingan
str=Cocok.Nilai
str=ganti(str,"src=","")
str=ganti(str,"href=","")
str=ganti(str,"""","")
str=ganti(str,"'","")
nama file=DapatkanNamafile(str)
getRet=getVirtual(str,jalur url,urlhead)
temp=Ganti(getRet,"//","**")
mulai=instr(temp,"/")
endt=instrRev(temp,"/")-mulai+1
jika mulai>0 maka
repl=virtual&pertengahan(temp,mulai)&" "
'response.Tulis balasan&"<br>"
mystr=Ganti(mystr,str,repl)
dir=pertengahan(temp,mulai,akhir)
temp=truepath&Ganti(dir,"/","")
BuatDir(temp)
'response.Tulis getRet&"||"&temp&nama file&"<br><br>"
SaveToFile getRet,temp&nama file
berakhir jika
Berikutnya
set Cocok = tidak ada
berakhir jika
%>