Hoy en día, los editores HTML basados en WEB se utilizan cada vez más en sistemas de noticias y sistemas de artículos. Una vez que se pega una red, se puede mantener el estilo original y también se pueden mantener las imágenes. Sin embargo, durante el uso, si se elimina la imagen pegada, quedará una "X" grande en la cara, lo que afecta la apariencia. En el pasado, tenía que guardar esta imagen y luego subirla nuevamente al servidor, lo cual era realmente problemático. ¿Puede el servidor descargar automáticamente la imagen, guardarla en el servidor y reemplazar el enlace en la página? La respuesta es sí.
Se requieren tres pasos para implementar esta función:
1. Obtenga la dirección de la imagen original. Hay muchos métodos, puede usar la división de cadenas o puede usar la coincidencia regular. La práctica ha demostrado que la combinación regular es la más sencilla. Las direcciones de las imágenes analizadas se guardan en la etiqueta <img>. Podemos obtener toda esta etiqueta primero. El proceso es el siguiente:
Set objRegExp = Nuevo objeto de configuración Regexp'set
objRegExp.IgnoreCase = True'Ignorar caso
objRegExp.Global = True' configurado para búsqueda de texto completo
objRegExp.Pattern = "<img.+?>"'Para garantizar que la dirección de la imagen se pueda recuperar con precisión, se divide en dos niveles de configuración: primero busque la etiqueta <img> dentro y luego recupere la dirección de la imagen. En el interior se implementa la función getimgs detrás.
cadenas = recortar (cadena)
Set Matches =objRegExp.Execute(strs)'Comenzar a ejecutar la configuración
Para cada partido en partidos
RetStr = RetStr &getimgs( Match.Value )'Realizar la segunda ronda de emparejamiento
Todas las imágenes en
Siguiente
tienen src="http://dirección de imagen", por lo que puede obtener la dirección de imagen exacta de esta manera:
función getimgs(cadena)
getimgs=""
Establecer objRegExp = Nueva expresión regular
objRegExp.IgnoreCase = Verdadero
objRegExp.Global = Verdadero
objRegExp.Pattern = " http://.+?"""' Saque la dirección dentro
establecer mm=objRegExp.Execute(cadena)
Para cada partido en mm
getimgs=getimgs&"||"&left(Match.Value,len(Match.Value)-)' encadena las direcciones internas para su uso posterior
próximo
La función final
ha obtenido las direcciones de todas las imágenes y podemos continuar con el segundo paso.
En segundo lugar, descargue la imagen y guárdela en el servidor. Esto se puede dividir en dos pasos: uno es obtener el contenido de la imagen y el otro es guardarlo en el servidor. La obtención del contenido de la imagen se logra mediante la siguiente función:
función getHTTPage(url)
en caso de error reanudar siguiente
http oscuro
set http=server.createobject("MSXML.XMLHTTP")'Utilice el método xmlhttp para obtener el contenido de la imagen
Http.open "OBTENER", URL, falso
http.enviar()
si Http.readystate<> entonces
función de salida
terminar si
getHTTPPage=Http.responseBody
establecer http=nada
si número de error <> 0 entonces err.Borrar
función final
Después de obtener el contenido de la imagen, necesitamos guardarla. Da la impresión de que se puede hacer con FSO, pero en realidad no es posible, de esta manera, el programa de guardado generará un error porque FSO no admite la transmisión. archivos, por lo que tenemos que llamar a otro objeto :ADO.STREM. El proceso específico es el siguiente:
función guardar imagen (de, al archivo)
geturl tenue,objStream,imgs
geturl=recortar(de)
imgs=gethttppage(geturl)'El proceso de obtención del contenido específico de la imagen
Set objStream = Server.CreateObject("ADODB.Stream")' Para crear un objeto ADODB.Stream, debe tener ADO o superior.
objStream.Type ='Abrir en modo binario
objStream.Open
objstream.write imgs' escribe el contenido de la cadena en el búfer
objstream.SaveToFile server.mappath(tofile),'-Escribe el contenido almacenado en el búfer en el archivo
objstream.Close()'Cerrar el objeto
establecer objstream = nada
función final
Entonces simplemente use un bucle para guardar todas las imágenes en la dirección que acaba de obtener. El proceso específico es el siguiente:
arrimg=split(retstr,"||")'Divida la cadena y obtenga la lista de direcciones dentro
allimg=""
nuevoimg=""
para i= a ubound(arrimg)
if arrimg(i)<>"" and instr(allimg,arrimg(i))< then' Compruebe si esta imagen se ha descargado
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
Función saveimage(arrimg(i),fname)' para guardar la dirección, consulte el proceso anterior
allimg=allimg&"||"&arrimg(i)' Encadena las direcciones de las imágenes guardadas para determinar la dirección que se reemplazará
newimg=newimg&"||"&fname' vuelve a unir la dirección local
terminar si
próximo
El tercer paso es reemplazar la dirección original. El proceso específico es el siguiente:
arrnew=split(newimg,"||")'Obtener la lista de direcciones de la imagen original
arrall=split(allimg,"||")'Obtener la lista de direcciones de las imágenes guardadas
for i= to ubound(arrnew)' ejecuta un bucle para reemplazar la dirección original
strs=reemplazar(cadenas,arrall(i),arrnew(i))
próximo
cctv=cadenas
Dicho esto, el proceso básico de esta función es así. Por supuesto, se puede modificar para lograr más funciones, como: agregar restricciones en el tamaño de la imagen y agregar restricciones en la descarga de imágenes en la máquina local para evitar la duplicación. . Al mismo tiempo, también cabe señalar que la desventaja de esta función es que solo puede procesar archivos de imágenes estáticas y no puede usarse para imágenes generadas por el programa.