小妖女 发表于 2015-2-3 23:28:57

ASP网站制作之用asp主动解析网页中的图片地址

asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。网页     如今基于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
set http=server.createobject("MSXML2.XMLHTTP")‘利用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(retstr,"||")'朋分字串,获得外面地址列表
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
cctv=strs
讲到这里,这个函数的根基进程就是如许了,固然可以对它停止改革就能够完成更多的功效,如:加上图片巨细的限制,加上对当地机上的图片下载的限制,以避免形成反复下载图片。同时也应当看到这个函数的缺乏的地方是只能处置静态的图片文件,不克不及合用法式生成的图片。
asp可以使用微软的activeX 使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般

活着的死人 发表于 2015-2-3 23:37:19

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

冷月葬花魂 发表于 2015-2-9 07:11:43

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

愤怒的大鸟 发表于 2015-2-27 04:11:37

我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.

老尸 发表于 2015-3-6 20:09:36

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习

不帅 发表于 2015-3-17 16:15:10

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

若相依 发表于 2015-3-24 11:54:17

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

第二个灵魂 发表于 2015-4-1 15:20:53

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

再见西城 发表于 2015-4-9 12:44:46

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

飘灵儿 发表于 2015-4-15 18:08:47

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

山那边是海 发表于 2015-4-21 06:43:27

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

admin 发表于 2015-4-30 00:01:19

那么,ASP.Net有哪些改进呢?

仓酷云 发表于 2015-5-1 21:12:10

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

乐观 发表于 2015-5-5 23:14:42

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

灵魂腐蚀 发表于 2015-5-11 22:38:34

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

小妖女 发表于 2015-6-28 17:47:02

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

分手快乐 发表于 2015-7-6 01:19:23

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

海妖 发表于 2015-7-11 02:31:03

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

爱飞 发表于 2015-7-15 09:28:01

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页: [1]
查看完整版本: ASP网站制作之用asp主动解析网页中的图片地址