Saat ini, editor HTML berbasis WEB semakin banyak digunakan dalam sistem berita dan sistem artikel. Gaya aslinya dapat dipertahankan setelah jaringan ditempel, dan gambar juga dapat dipertahankan dalam hal ini. Namun, selama penggunaan, jika gambar yang ditempel dihapus, tanda "X" besar akan tertinggal di wajah, yang mempengaruhi penampilan. Dulu, saya harus menyimpan gambar ini dan kemudian mengunggahnya lagi ke server, yang sungguh merepotkan. Bisakah server mengunduh gambar secara otomatis, menyimpannya di server, dan mengganti link di halaman? Jawabannya adalah ya.
Tiga langkah diperlukan untuk mengimplementasikan fungsi ini:
1. Dapatkan alamat gambar aslinya. Ada banyak metode, Anda bisa menggunakan pemisahan string, atau Anda bisa menggunakan pencocokan biasa. Latihan telah membuktikan bahwa pencocokan reguler adalah yang paling sederhana. Alamat gambar yang dianalisis disimpan dalam tag <img>. Kita bisa mendapatkan semua tag ini terlebih dahulu. Prosesnya adalah sebagai berikut:
Setel objRegExp = Objek konfigurasi set Regexp baru
objRegExp.IgnoreCase = Benar'Abaikan kasus
objRegExp.Global = True' disetel ke pencarian teks lengkap
objRegExp.Pattern = "<img.+?>"'Untuk memastikan bahwa alamat gambar dapat diambil secara akurat, ini dibagi menjadi dua tingkat konfigurasi: pertama temukan tag <img> di dalamnya, lalu ambil alamat gambar di dalam. Fungsi getimgs di belakangnya diimplementasikan.
strs=memangkas(str)
Setel Kecocokan =objRegExp.Execute(strs)'Mulai mengeksekusi konfigurasi
Untuk Setiap Pertandingan dalam Pertandingan
RetStr = RetStr &getimgs( Match.Value )'Lakukan pencocokan putaran kedua
Semua gambar di
Berikutnya
memiliki src="http://image address", sehingga Anda bisa mendapatkan alamat gambar yang tepat seperti ini:
fungsi getimgs(str)
getimgs=""
Setel objRegExp = Regexp Baru
objRegExp.IgnoreCase = Benar
objRegExp.Global = Benar
objRegExp.Pattern = " http://.+?"""' Keluarkan alamat di dalamnya
atur mm=objRegExp.Execute(str)
Untuk Setiap Kecocokan dalam mm
getimgs=getimgs&"||"&left(Match.Value,len(Match.Value)-)' merangkai alamat di dalamnya untuk digunakan nanti
Berikutnya
Fungsi akhir
telah memperoleh alamat semua gambar, dan kita dapat melanjutkan ke langkah kedua.
Kedua, unduh gambar dan simpan di server. Ini dapat dibagi menjadi dua langkah: satu untuk mendapatkan konten gambar, dan yang lainnya adalah menyimpannya di server. Memperoleh konten gambar dicapai melalui fungsi berikut:
fungsi getHTTPage(url)
pada kesalahan lanjutkan berikutnya
redupkan http
set http=server.createobject("MSXML.XMLHTTP")'Gunakan metode xmlhttp untuk mendapatkan konten gambar
Http.buka "GET", url, salah
Http.kirim()
jika Http.readystate<> maka
fungsi keluar
berakhir jika
getHTTPage=Http.responseBody
atur http=tidak ada
jika err.number<>0 maka err.Clear
fungsi akhir
Setelah mendapatkan isi gambarnya, kita perlu menyimpannya. Ini memberi kesan kepada orang-orang bahwa hal itu dapat dilakukan dengan FSO, namun nyatanya tidak mungkin. Dengan cara ini, program penyimpanan akan error karena FSO tidak mendukung streaming file, jadi kita harus memanggil objek lain :ADO.STREM. Proses spesifiknya adalah sebagai berikut:
fungsi simpan gambar (dari, ke file)
redupkan geturl,objStream,imgs
geturl=trim(dari)
imgs=gethttppage(geturl)'Proses mendapatkan konten spesifik gambar
Setel objStream = Server.CreateObject("ADODB.Stream")' Untuk membuat objek ADODB.Stream, Anda harus memiliki ADO atau lebih tinggi.
objStream.Type ='Buka dalam mode biner
objStream.Buka
objstream.write imgs' menulis konten string ke dalam buffer
objstream.SaveToFile server.mappath(tofile),'-Tulis konten yang di-buffer ke file
objstream.Close()'Tutup objeknya
atur objstream=tidak ada
fungsi akhir
Jadi gunakan saja loop untuk menyimpan semua gambar di alamat yang baru saja diperoleh. Proses spesifiknya adalah sebagai berikut:
arrimg=split(retstr,"||")'Pisahkan string dan dapatkan daftar alamat di dalamnya
allimg=""
gambar baru=""
untuk i= ke ubound(arrimg)
if arrimg(i)<>"" and instr(allimg,arrimg(i))< lalu' Periksa apakah gambar ini sudah diunduh
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)' berfungsi untuk menyimpan alamat, lihat prosesnya diatas
allimg=allimg&"||"&arrimg(i)' Rangkai alamat gambar yang disimpan untuk menentukan alamat yang akan diganti
newimg=newimg&"||"&fname' merangkai kembali alamat lokal
berakhir jika
Berikutnya
Langkah ketiga adalah mengganti alamat asli. Proses spesifiknya adalah sebagai berikut:
arrnew=split(newimg,"||")'Dapatkan daftar alamat gambar asli
arrall=split(allimg,"||")'Dapatkan daftar alamat gambar yang disimpan
for i= to ubound(arrnew)' mengeksekusi loop untuk menggantikan alamat asli
strs=ganti(str,arrall(i),arrnew(i))
Berikutnya
cctv=str
Karena itu, proses dasar dari fungsi ini adalah seperti ini. Tentu saja, dapat dimodifikasi untuk mencapai lebih banyak fungsi, seperti: menambahkan batasan pada ukuran gambar dan menambahkan batasan pada pengunduhan gambar di mesin lokal untuk menghindari duplikasi . Pada saat yang sama, perlu juga dicatat bahwa kekurangan dari fungsi ini adalah ia hanya dapat memproses file gambar statis dan tidak dapat digunakan untuk gambar yang dihasilkan oleh program.