仓酷云

标题: ASP网站制作之用XMLHTTP剖析图片地点并保留 [打印本页]

作者: 若相依    时间: 2015-1-16 22:19
标题: ASP网站制作之用XMLHTTP剖析图片地点并保留
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。xml  如今基于Web页的HTML的编纂器在旧事体系,文章体系顶用得愈来愈广,一个网页一粘就能够坚持本来的款式,同时图片也能够在这个页中坚持。可是在利用过程当中,假如所粘贴页中的图片被删除,就会在本人的页面上留下一个年夜年夜的“X”,影响美妙。之前只好把这个图片保留上去,再从头上传到服务器上,如许其实贫苦。能不克不及让服务器主动往下载图片保留在服务器而且交换页面上的链接?谜底是一定的。

  要完成这个功效必要经由三个步骤:
  一,获得原页中的图片的地点。办法良多,能够用支解字符串,也能够用正则婚配。理论证实用正则婚配最为复杂。经由剖析图片的地点都保留在<img>标签中。我们能够先获得一切这个标签。历程以下:
SetobjRegExp=NewRegexp设置设置工具
objRegExp.IgnoreCase=True疏忽巨细写
objRegExp.Global=True设置为全文搜刮
objRegExp.Pattern="<img.+?>"为了确保能正确地掏出图片地点以是分为两层设置:起首找到内里的<img>标签,然后再掏出内里的图片地点前面的getimgs函数就是完成后一个功效的。
strs=trim(str)
SetMatches=objRegExp.Execute(strs)入手下手实行设置
ForEachMatchinMatches
RetStr=RetStr&getimgs(Match.Value)实行第二轮的婚配
Next
  一切的图片在内里都是如许的src="http://图片的地点",以是能够如许来获得切实的图片地点:
functiongetimgs(str)
getimgs=""
SetobjRegExp1=NewRegexp
objRegExp1.IgnoreCase=True
objRegExp1.Global=True
objRegExp1.Pattern="http://.+?"""掏出内里的地点
setmm=objRegExp1.Execute(str)
ForEachMatch1inmm
getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)把内里的地点串起来备用
next
endfunction

  获得了一切的图片的地点,我们就能够举行第二步的操纵了。
  二,下载图片并保留在服务器上。这个又能够分为两个步骤:一个是获得图片的内容,另外一个是保留在服务器上。获得图片的内容是经由过程上面的函数来完成的:

functiongetHTTPPage(url)
onerrorresumenext
dimhttp
sethttp=server.createobject("MSXML2.XMLHTTP")‘利用xmlhttp的办法来取得图片的内容
Http.open"GET",url,false
Http.send()
ifHttp.readystate4then
exitfunction
endif
getHTTPPage=Http.responseBody
sethttp=nothing
iferr.number0thenerr.Clear
endfunction
  获得了图片的内容要保留,给人一种感到是用FSO来作就能够了,但实践上不可,如许保留程序就会堕落,由于FSO不撑持流式的文件,以是我们要挪用另外一个工具:ADO.STREM。详细的历程以下:
functionsaveimage(from,tofile)
dimgeturl,objStream,imgs
geturl=trim(from)
imgs=gethttppage(geturl)获得图片的具休内容的历程
SetobjStream=Server.CreateObject("ADODB.Stream")创建ADODB.Stream工具,必需要ADO2.5以上版本
objStream.Type=1以二进制形式翻开
objStream.Open
objstream.writeimgs将字符串内容写进缓冲
objstream.SaveToFileserver.mappath(tofile),2-将缓冲的内容写进文件
objstream.Close()封闭工具
setobjstream=nothing
endfunction
  以是只需用一个轮回来把方才获得的地点中的图片全体保留上去,详细历程以下:
arrimg=split(retstr,"||")支解字串,获得内里地点列表
allimg=""
newimg=""
fori=1toubound(arrimg)
ifarrimg(i)""andinstr(allimg,arrimg(i))<1then看这个图片是不是已下载过
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)‘保留地点的函数,历程见下面
allimg=allimg&"||"&arrimg(i)把保留上去的图片的地点串回起来,以断定要交换的地点
newimg=newimg&"||"&fname把当地的地点串回起来
endif
next

  第三步就是交换本来的地点了。详细的历程就是上面了:

arrnew=split(newimg,"||")获得本来的图片地点列表
arrall=split(allimg,"||")获得已保留上去的图片的地点列表
fori=1toubound(arrnew)实行轮回交换本来的地点
strs=replace(strs,arrall(i),arrnew(i))
next
cctv=strs

  讲到这里,这个函数的基础历程就是如许了,固然能够对它举行改革就能够完成更多的功效,如:加上图片巨细的限定,加上对当地机上的图片下载的限定,以避免形成反复下载图片。同时也应当看到这个函数的不敷的地方是只能处置静态的图片文件,不克不及合用程序天生的图片。帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。
作者: 再见西城    时间: 2015-1-19 08:41
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
作者: 简单生活    时间: 2015-1-27 21:11
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
作者: 小女巫    时间: 2015-2-5 13:39
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
作者: 海妖    时间: 2015-2-11 21:32
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
作者: 兰色精灵    时间: 2015-3-2 20:07
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
作者: 金色的骷髅    时间: 2015-3-11 06:05
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
作者: 深爱那片海    时间: 2015-3-25 04:20
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2