background image

.Net——用 XMLHTTP 组件解析图片地址并保存

现在基于 Web 页的 HTML 的编辑器在新闻系统,文章系统中用得越来越广,一个网页一粘就可  

以保持原来的样式,同时图片也可以在这个页中保持。但是在使用过程中,如果所粘贴页中

的图片被删除,就会在自己的页面上留下一个大大的 X”

 

,影响美观。以前只好把这个图片

保存下来,再重新上传到服务器上,这样实在麻烦。能不能让服务器自动去下载图片保存在

 

服务器并且替换页面上的链接?答案是肯定的。

  

 

要实现这个功能需要经过三个步骤:

  一,取得原页中的图片的地址。方法很多,可以用分割字符串,也可以用正则匹配。实践证

明用正则匹配最为简单。经过分析图片的地址都保存在<img>标签中。我们可以先取得所有这

 

个标签。过程如下:

  Set objRegExp = New Regexp’

 

设置配置对象

  objRegExp.IgnoreCase = True’

 

忽略大小写

  objRegExp.Global = True’

 

设置为全文搜索

  objRegExp.Pattern = "<img.+?>"’为了确保能准确地取出图片地址所以分为两层配置:首先

找到里面的 <img>标签,然后再取出里面的图片地址后面的 getimgs 函数就是实现后一个功

 

能的。

  strs=trim(str) 

  Set Matches =objRegExp.Execute(strs)’

 

开始执行配置

  For Each Match in Matches 

  RetStr = RetStr &getimgs( Match.Value )’

 

执行第二轮的匹配

  Next 

  所有的图片在里面都是这样的 src="http://图片的地址 ",所以可以这样来取得确切的图片

 

地址:

  function getimgs(str) 

  getimgs="" 

  Set objRegExp1 = New Regexp 

  objRegExp1.IgnoreCase = True 

  objRegExp1.Global = True 

  objRegExp1.Pattern = "http://.+?"""’

 

取出里面的地址

  set mm=objRegExp1.Execute(str) 

  For Each Match1 in mm 

  getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)’

 

把里面的地址串起来备用

  next 

  end function 

  

 

取得了所有的图片的地址,我们就可以进行第二步的操作了。

  二,下载图片并保存在服务器上。这个又可以分为两个步骤:一个是取得图片的内容,另

 

一个是保存在服务器上。取得图片的内容是通过下面的函数来实现的:

  function getHTTPPage(url) 

  on error resume next 

  dim http