Heutzutage werden WEB-basierte HTML-Editoren immer häufiger in Nachrichtensystemen und Artikelsystemen verwendet. Der ursprüngliche Stil kann beibehalten werden, sobald ein Netzwerk eingefügt wird, und auch Bilder können darin beibehalten werden. Wenn jedoch während der Verwendung das eingefügte Bild gelöscht wird, bleibt ein großes „X“ auf dem Gesicht zurück, was sich auf das Erscheinungsbild auswirkt. Früher musste ich dieses Bild speichern und es dann erneut auf den Server hochladen, was wirklich mühsam war. Kann der Server das Bild automatisch herunterladen, auf dem Server speichern und den Link auf der Seite ersetzen? Die Antwort ist ja.
Zur Implementierung dieser Funktion sind drei Schritte erforderlich:
1. Ermitteln Sie die Adresse des Originalbilds. Es gibt viele Methoden. Sie können die Aufteilung von Zeichenfolgen oder den regulären Abgleich verwenden. Die Praxis hat gezeigt, dass regelmäßiges Matching am einfachsten ist. Die Adressen der analysierten Bilder werden im <img>-Tag gespeichert. Wir können zuerst alle diese Tags erhalten. Der Prozess ist wie folgt:
Set objRegExp = Neues Regexp'set-Konfigurationsobjekt
objRegExp.IgnoreCase = True'Groß-/Kleinschreibung ignorieren
objRegExp.Global = True' wird auf Volltextsuche gesetzt
objRegExp.Pattern = "<img.+?>"'Um sicherzustellen, dass die Bildadresse genau abgerufen werden kann, ist sie in zwei Konfigurationsebenen unterteilt: Suchen Sie zuerst das darin enthaltene <img>-Tag und rufen Sie dann die Bildadresse ab Im Inneren ist die getimgs-Funktion implementiert.
strs=trim(str)
Set Matches =objRegExp.Execute(strs)'Ausführung der Konfiguration starten
Für jedes Spiel in Spielen
RetStr = RetStr &getimgs( Match.Value )'Führen Sie die zweite Matching-Runde durch
Alle Bilder in
Next
haben src="http://image address", sodass Sie die genaue Bildadresse wie folgt erhalten können:
Funktion getimgs(str)
getimgs=""
Setze objRegExp = Neuer Regexp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = " http://.+?"""' Nehmen Sie die darin enthaltene Adresse heraus
set mm=objRegExp.Execute(str)
Für jede Übereinstimmung in mm
getimgs=getimgs&"||"&left(Match.Value,len(Match.Value)-)' string die darin enthaltenen Adressen zur späteren Verwendung
nächste
Die Endfunktion
hat die Adressen aller Bilder erhalten und wir können mit dem zweiten Schritt fortfahren.
Zweitens laden Sie das Bild herunter und speichern es auf dem Server. Dies kann in zwei Schritte unterteilt werden: Der erste besteht darin, den Inhalt des Bildes abzurufen, und der andere darin, ihn auf dem Server zu speichern. Das Abrufen des Bildinhalts erfolgt über die folgende Funktion:
Funktion getHTTPage(url)
Bei Fehler als nächstes fortfahren
dimmen Sie http
set http=server.createobject("MSXML.XMLHTTP")'Verwenden Sie die xmlhttp-Methode, um den Inhalt des Bildes abzurufen
Http.open „GET“,url,false
Http.send()
wenn Http.readystate<> dann
Exit-Funktion
Ende wenn
getHTTPPage=Http.responseBody
setze http=nichts
Wenn err.number<>0, dann err.Clear
Endfunktion
Nachdem wir den Inhalt des Bildes erhalten haben, müssen wir es speichern. Dies erweckt den Eindruck, dass dies mit FSO möglich ist, aber tatsächlich ist dies nicht möglich. Auf diese Weise wird das Speicherprogramm fehlerhaft sein, da FSO kein Streaming unterstützt Dateien, also müssen wir ein anderes Objekt aufrufen: ADO.STREM. Der spezifische Prozess ist wie folgt:
Funktion saveimage(from,tofile)
dim geturl,objStream,imgs
geturl=trimmen(von)
imgs=gethttppage(geturl)'Der Prozess zum Abrufen des spezifischen Inhalts des Bildes
Set objStream = Server.CreateObject("ADODB.Stream")' Um ein ADODB.Stream-Objekt zu erstellen, müssen Sie über ADO oder höher verfügen.
objStream.Type ='Im Binärmodus öffnen
objStream.Open
objstream.write imgs' schreibt den String-Inhalt in den Puffer
objstream.SaveToFile server.mappath(tofile),'-Schreiben Sie den gepufferten Inhalt in die Datei
objstream.Close()'Schließe das Objekt
setze objstream=nichts
Endfunktion
Verwenden Sie also einfach eine Schleife, um alle Bilder unter der gerade erhaltenen Adresse zu speichern. Der spezifische Vorgang ist wie folgt:
arrimg=split(retstr,"||")'Teilen Sie die Zeichenfolge und erhalten Sie die darin enthaltene Adressliste
allimg=""
newimg=""
for i= to ubound(arrimg)
if arrimg(i)<>"" and instr(allimg,arrimg(i))< then' Überprüfen Sie, ob dieses Bild heruntergeladen wurde
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)‘-Funktion zum Speichern der Adresse, siehe oben beschriebener Vorgang
allimg=allimg&"||"&arrimg(i)' Verketten Sie die Adressen der gespeicherten Bilder, um die zu ersetzende Adresse zu ermitteln
newimg=newimg&"||"&fname' setzt die lokale Adresse wieder zusammen
Ende wenn
nächste
Der dritte Schritt besteht darin, die ursprüngliche Adresse zu ersetzen. Der spezifische Prozess ist wie folgt:
arrnew=split(newimg,"||")'Holen Sie sich die ursprüngliche Bildadressliste
arrall=split(allimg,"||")'Ruft die Adressliste der gespeicherten Bilder ab
for i= to ubound(arrnew)' führt eine Schleife aus, um die ursprüngliche Adresse zu ersetzen
strs=replace(strs,arrall(i),arrnew(i))
nächste
cctv=strs
Allerdings ist der grundlegende Prozess dieser Funktion wie folgt: Sie kann natürlich geändert werden, um weitere Funktionen zu erreichen, z. B. das Hinzufügen von Einschränkungen für die Bildgröße und das Hinzufügen von Einschränkungen für das Herunterladen von Bildern auf dem lokalen Computer, um Duplikate zu vermeiden . Gleichzeitig ist zu beachten, dass der Nachteil dieser Funktion darin besteht, dass sie nur statische Bilddateien verarbeiten kann und nicht für vom Programm generierte Bilder verwendet werden kann.