1. Obtenez l'adresse de l'image sur la page d'origine.
<%
fonction PicStr(str)
Set objRegExp = New Regexp 'Définir l'objet de configuration
objRegExp.IgnoreCase = True 'Ignorer la casse
objRegExp.Global = True 'Défini pour la recherche en texte intégral
objRegExp.Pattern = <IMG.+?> 'Afin de garantir que l'adresse de l'image puisse être récupérée avec précision, elle est divisée en deux niveaux de configuration : recherchez d'abord la balise <IMG> à l'intérieur, puis récupérez l'adresse de l'image à l'intérieur. La fonction getimgs derrière est d'implémenter cette dernière fonctionnelle.
strs=trim(str)
Set Matches =objRegExp.Execute(strs) 'Démarrer l'exécution de la configuration
Pour chaque match dans les matchs
PicStr = PicStr &getimgs( Match.Value ) 'Effectuer le deuxième tour de correspondance
Suivant
'Toutes les images ressemblent à ceci src=http://adresse de l'image, vous pouvez donc obtenir l'adresse exacte de l'image comme ceci
fonction de fin
fonction getimgs(str)
obtenir des images =
Définir objRegExp1 = Nouvelle expression rationnelle
objRegExp1.IgnoreCase = Vrai
objRegExp1.Global = Vrai
objRegExp1.Pattern = http://.+? 'Obtenir l'adresse à l'intérieur
set mm=objRegExp1.Execute(str)
Pour chaque Match1 en mm
getimgs=getimgs&||&left(Match1.Value,len(Match1.Value)-1) 'Rassemblez les adresses à l'intérieur pour une utilisation ultérieure
suivant
fonction de fin
%>
Deuxièmement, téléchargez l'image et enregistrez-la sur le serveur.
<%
fonction getHTTPage(url)
en cas d'erreur, reprendre ensuite
atténué http
set http=server.createobject(MSXML2.XMLHTTP) 'Utilisez la méthode xmlhttp pour obtenir le contenu de l'image
Http.open GET,url,false
Http.envoyer()
si Http.readystate<>4 alors
fonction de sortie
finir si
getHTTPPage=Http.responseBody
définir http = rien
si err.number<>0 alors err.Clear
fonction de fin
"Le contenu de l'image a été obtenu et doit être sauvegardé. Cela donne l'impression que cela peut être fait avec FSO, mais en fait cela ne fonctionne pas de cette façon, le programme de sauvegarde génère une erreur car FSO ne prend pas en charge le streaming. fichiers, nous devons donc appeler un autre objet : ADO.STREM. Le processus spécifique est le suivant :
fonction saveimage (de, vers un fichier)
faible geturl, objStream, imgs
geturl=trim(de)
imgs=gethttppage(geturl)'Le processus d'obtention du contenu spécifique de l'image
Set objStream = Server.CreateObject(ADODB.Stream)' Pour créer un objet ADODB.Stream, ADO 2.5 ou supérieur est requis
objStream.Type =1'Ouvrir en mode binaire
objStream.Open
objstream.write imgs' écrit le contenu de la chaîne dans le tampon
objstream.SaveToFile server.mappath(tofile),2'-écrit le contenu mis en mémoire tampon dans le fichier
objstream.Close()'Fermer l'objet
définir objstream = rien
fonction de fin
'Il suffit donc d'utiliser une boucle pour sauvegarder toutes les images à l'adresse que vous venez d'obtenir. Le processus spécifique est le suivant :
arrimg=split(PicStr(str),||) 'Divisez la chaîne et récupérez la liste d'adresses à l'intérieur
allimg=
nouvelle image =
pour i=1 vers ubound(arrimg)
if arrimg(i)<> et instr(allimg,arrimg(i))<1 then 'Voyez si cette image a été téléchargée
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),.)))
fonction saveimage(arrimg(i),fname)' pour enregistrer l'adresse, voir le processus ci-dessus
allimg=allimg&||&arrimg(i) 'Renvoyez les adresses des images enregistrées pour déterminer l'adresse à remplacer
newimg=newimg&||&fname 'Renvoyer l'adresse locale
finir si
suivant
« La troisième étape consiste à remplacer l'adresse d'origine. Le processus spécifique est le suivant :
arrnew=split(newimg,||) 'Obtenir la liste d'adresses de l'image d'origine
arrall=split(allimg,||) 'Obtenir la liste d'adresses des images enregistrées
for i=1 to ubound(arrnew) 'Exécuter une boucle pour remplacer l'adresse d'origine
strs=replace(strs,arrall(i),arrnew(i))
suivant
%>