知识大全 用XMLHTTP组件解析图片地址并保存

Posted 地址

篇首语:自己选择的路,跪着也要走完。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用XMLHTTP组件解析图片地址并保存相关的知识,希望对你有一定的参考价值。

用XMLHTTP组件解析图片地址并保存  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    现在基于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=//图片的地址 所以可以这样来取得确切的图片地址   function getimgs(str)   getimgs=   Set objRegExp = New Regexp   objRegExp IgnoreCase = True   objRegExp Global = True   objRegExp Pattern = +? 取出里面的地址   set mm=objRegExp Execute(str)   For Each Match in mm   getimgs=getimgs& || &left(Match Value len(Match Value) ) 把里面的地址串起来备用   next   end function   取得了所有的图片的地址 我们就可以进行第二步的操作了   二 下载图片并保存在服务器上 这个又可以分为两个步骤 一个是取得图片的内容 另一个是保存在服务器上 取得图片的内容是通过下面的函数来实现的   function getHTTPPage(url)   on error resume next   dim   set ( MSXML XMLHTTP ) 使用xml的方法来获得图片的内容   Http open GET url false   Http send()   if Http readystate<> then   exit function   end if   getHTTPPage=Http responseBody   set =nothing   if err number<> then err Clear   end function   取得了图片的内容要保存 给人一种感觉是用FSO来作就可以了 但实际上不行 这样保存程序就会出错 因为FSO不支持流式的文件 所以我们要调用另一个对象 ADO STREM 具体的过程如下   function saveimage(from tofile)   dim geturl objStream imgs   geturl=trim(from)   imgs=getpage(geturl) 取得图片的具休内容的过程   Set objStream = Server CreateObject( ADODB Stream ) 建立ADODB Stream对象 必须要ADO 以上版本   objStream Type = 以二进制模式打开   objStream Open   objstream write imgs 将字符串内容写入缓冲   objstream SaveToFile server mappath(tofile) 将缓冲的内容写入文件   objstream Close() 关闭对象   set objstream=nothing   end function   所以只要用一个循环来把刚才取得的地址中的图片全部保存下来 具体过程如下   arrimg=split(retstr || ) 分割字串 取得里面地址列表   allimg=   newimg=   for i= to ubound(arrimg)   if arrimg(i)<> and instr(allimg arrimg(i))< 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= to ubound(arrnew) 执行循环替换原来的地址   strs=replace(strs arrall(i) arrnew(i))   next   cctv=strs   讲到这里 这个函数的基本过程就是这样了 当然可以对它进行改造就可以实现更多的功能 如 加上图片大小的限制 加上对本地机上的图片下载的限制 以免造成重复下载图片 同时也应该看到这个函数的不足之处是只能处理静态的图片文件 不能适用程序生成的图片 cha138/Article/program/ASP/201311/21686

相关参考

知识大全 jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码

jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 用JS快速保存网页中所有图片的方法

用JS快速保存网页中所有图片的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!打开一个欲保存所有

知识大全 怎样将cdr格式中的图片保存成png格式

怎样将cdr格式中的图片保存成png格式1.选择导出CorelDraw这款软件和别的软件略有不同,这款软件不能直接保存jpg、png等位图模式。如果我们需要保存这些位图模式的话,我们需要用导出来实现;

知识大全 asp 利用Persits.jpeg组件生成图片

asp利用Persits.jpeg组件生成图片  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 怎么才能使百度上的图片保存到图库

怎么才能使百度上的图片保存到图库使百度上的图片保存到图库方法:1.手机打开百度之后,点击图片,查看大图;2.长按图片,弹出菜单,选择保存到手机,保存成功之后,即可在手机图库中查看到在百度查找的图片。怎

知识大全 php 将图片保存为不同规格的图片

  图片处理类imageclsphp  <?php/**图片处理类*/classimagecls/***文件信息*/var$file=array();/***保存目录*/var$dir=;/**

知识大全 xmlhttp的open方法使用详解

  open  创建一个新的请求并指定此请求的方法URL以及验证信息  语法  oXMLHttpRequestopen(bstrMethodbstrUrlvarAsyncbstrUserbstrPas

知识大全 怎么用ps把做好的海报图片改成1920*700

怎么用ps把做好的海报图片改成1920*700“图像-图像大小”中可以设置;或者用裁剪工具(V),设置好尺寸再裁剪而成。ps怎么把做好的图片保存成图片形式?快捷键ctrl+shift+s或者ctrl+

知识大全 微信群里别人发的图片,如果我转发或保存,图片发布者知道吗

微信群里别人发的图片,如果我转发或保存,图片发布者知道吗?群里人知道吗?微信群里别人发的图片,如果我转发或保存,图片发布者不会知道,群里人也不知道!但是如果你转发的时候有原创的人或他的朋友收到了,或者

知识大全 ASP取出HTML里面的图片地址的函数

ASP取出HTML里面的图片地址的函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以