不帅 发表于 2015-1-16 22:10:42

ASP编程:asp主动剖析图片地点并将其保留到当地服...

ASP脚本是采用明文(plaintext)方式来编写的。服务器如今基于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提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。

若相依 发表于 2015-1-18 21:43:27

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。

变相怪杰 发表于 2015-1-25 17:21:24

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

简单生活 发表于 2015-2-3 12:10:01

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

若天明 发表于 2015-2-8 21:39:10

下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。

小妖女 发表于 2015-2-26 11:31:49

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

爱飞 发表于 2015-3-8 14:20:05

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

活着的死人 发表于 2015-3-16 02:54:47

运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。

蒙在股里 发表于 2015-3-22 19:10:53

ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
页: [1]
查看完整版本: ASP编程:asp主动剖析图片地点并将其保留到当地服...