网络编程
位置:首页>> 网络编程>> Asp编程>> asp使用正则自动解析图片地址并保存(2)

asp使用正则自动解析图片地址并保存(2)

  发布时间:2007-08-17 11:29:00 

标签:正则,正则表达式,图片,远程,xml

二、下载图片并保存在服务器上

首先使用xmlhttp的方法来获得图片的内容


function getHTTPPage(url) 
 on error resume next 
 dim http 
 set http=server.createobject("MSXML2.XMLHTTP")  Http.open "GET",url,false 
 Http.send() 
 if Http.readystate<>4 then  
 exit function 
 end if 
 getHTTPPage=Http.responseBody 
 set http=nothing 
 if err.number<>0 then err.Clear  
end function 


取得了图片的内容要保存,给人一种感觉是用FSO来作就可以了,但实际上不行,这样保存程序就会出错,因为FSO不支持流式的文件,所以我们要调用另一个对象:ADO.STREM。

具体的过程如下:


function saveimage(from,tofile)
 dim geturl,objStream,imgs
 geturl=trim(from)
 imgs=gethttppage(geturl)’取得图片的具休内容的过程
 Set objStream = Server.CreateObject("ADODB.Stream")’建立ADODB.Stream对象,必须要ADO 2.5以上版本
 objStream.Type =1’以二进制模式打开
 objStream.Open
 objstream.write imgs’将字符串内容写入缓冲
 objstream.SaveToFile server.mappath(tofile),2’-将缓冲的内容写入文件
 objstream.Close()’关闭对象
 set objstream=nothing
end function



所以只要用一个循环来把刚才取得的地址中的图片全部保存下来,具体过程如下:


arrimg=split(PicStr(str),"||") ’分割字串,取得里面地址列表
allimg=""
newimg=""
for i=1 to ubound(arrimg)
if arrimg(i)<>"" and instr(allimg,arrimg(i))<1 then ’看这个图片是否已经下载过
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)‘保存地址的函数,过程见上面
allimg=allimg&"||"&arrimg(i) ’把保存下来的图片的地址串回起来,以确定要替换的地址
newimg=newimg&"||"&fname ’把本地的地址串回起来
end if
next



第三步就是替换原来的地址了。具体的过程就是下面了:

arrnew=split(newimg,"||") ’取得原来的图片地址列表
arrall=split(allimg,"||") ’取得已经保存下来的图片的地址列表
for i=1 to ubound(arrnew) ’执行循环替换原来的地址
 strs=replace(strs,arrall(i),arrnew(i))
next


%>


0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com