仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 622|回复: 10
打印 上一主题 下一主题

[学习教程] ASP网页编程之主动将远程页面的文件中的图片下载到本...

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:35:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
SQLServer是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。服务器|下载|页面*writtenbyJaron,2003-11-12*/
/*原出处:CSDN文档中央http://www.csdn.net/developWEB手艺中文网http://www.jaron.cn*/
/*转载请说明出处和保存此版权信息*/
/*接待利用SiteManager-CMSServer网站办理体系http://sitemanager.cnzone.net*/
/*主动创立目次,主动将原文件名改名,文件格局的限定和其他功效的一些优化
/*主动保留网页文件中http://....格局的图片到当地

程序完成功效:主动将远程页面的文件中的图片下载到当地服务器

将下文保留为save2local.asp
测试:save2local.asp?url=http://ent.sina.com.cn/s/m/2003-11-11/1411231388.html

<%
参数设置入手下手
url=request("url")
localaddr=server.MapPath("images_remote/")保留到当地的目次
localdir="images_remote/"http会见的绝对路径
AllowFileExt="jpg|bmp|png|gif"撑持的文件名格局
参数设置终了

ifcreatedir(localaddr)=falsethen
response.Write"创立目次失利,请反省目次权限"
response.End
endif
response.WriteConvert2LocalAddr(url,localaddr,localdir)

functionConvert2LocalAddr(url,localaddr,localdir)
参数申明
url页面地点
localaddr保留当地的物理地点
localdir绝对路径
strContent=getHTTPPage(url)
SetobjRegExp=NewRegexp
objRegExp.IgnoreCase=True
objRegExp.Global=True
objRegExp.Pattern="<img.+?>"
SetMatches=objRegExp.Execute(strContent)
ForEachMatchinMatches
RetStr=RetStr&GetRemoteImages(Match.Value)
Next
ImagesArray=split(RetStr,"||")
RemoteImage=""
LocalImage=""
fori=1toubound(ImagesArray)
ifImagesArray(i)""andinstr(RemoteImage,ImagesArray(i))<1then
fname=baseurl&cstr(i&mid(ImagesArray(i),instrrev(ImagesArray(i),".")))
ImagesFileName=ImagesArray(i)
AllowFileExtArray=split(AllowFileExt,"|")
isGetFile=false
fortmp=0toubound(AllowFileExtArray)
iflcase(GetFileExt(ImagesFileName))=ALlowFileExtArray(tmp)then
isGetFile=True
endif
next
ifisGetFile=truethen
newfilename=GenerateRandomFileName(fname)
callSave2Local(ImagesFileName,localaddr&"/"&newfilename)
RemoteImage=RemoteImage&"||"&ImagesFileName
LocalImage=LocalImage&"||"&localdir&newfilename
endif
endif
next
arrnew=split(LocalImage,"||")
arrall=split(RemoteImage,"||")
fori=1toubound(arrnew)
strContent=replace(strContent,arrall(i),arrnew(i))
next
Convert2LocalAddr=strContent
endfunction

functionGetRemoteImages(str)
SetobjRegExp1=NewRegexp
objRegExp1.IgnoreCase=True
objRegExp1.Global=True
objRegExp1.Pattern="http://.+?"
setmm=objRegExp1.Execute(str)
ForEachMatch1inmm
tmpaddr=left(Match1.Value,len(Match1.Value)-1)
GetRemoteImages=GetRemoteImages&"||"&replace(replace(tmpaddr,"""",""),"","")
next
endfunction

functiongetHTTPPage(url)
onerrorresumenext
dimhttp
sethttp=Server.createobject("Msxml2.XMLHTTP")
Http.open"GET",url,false
Http.send()
ifHttp.readystate4thenexitfunction
getHTTPPage=bytes2BSTR(Http.responseBody)
sethttp=nothing
iferr.number0thenerr.Clear
endfunction

Functionbytes2BSTR(vIn)
dimstrReturn
dimi,ThisCharCode,NextCharCode
strReturn=""
Fori=1ToLenB(vIn)
ThisCharCode=AscB(MidB(vIn,i,1))
IfThisCharCode<&H80Then
strReturn=strReturn&Chr(ThisCharCode)
Else
NextCharCode=AscB(MidB(vIn,i+1,1))
strReturn=strReturn&Chr(CLng(ThisCharCode)*&H100+CInt(NextCharCode))
i=i+1
EndIf
Next
bytes2BSTR=strReturn
EndFunction

functiongetHTTPimg(url)
onerrorresumenext
dimhttp
sethttp=server.createobject("MSXML2.XMLHTTP")
Http.open"GET",url,false
Http.send()
ifHttp.readystate4thenexitfunction
getHTTPimg=Http.responseBody
sethttp=nothing
iferr.number0thenerr.Clear
endfunction

functionSave2Local(from,tofile)
dimgeturl,objStream,imgs
geturl=trim(from)
imgs=gethttpimg(geturl)
SetobjStream=Server.CreateObject("ADODB.Stream")
objStream.Type=1
objStream.Open
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 10:03:47 | 只看该作者
掌握asp的特性而且一定要知道为什么。
乐观 该用户已被删除
板凳
发表于 2015-1-20 12:08:24 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
透明 该用户已被删除
地板
 楼主| 发表于 2015-1-25 14:05:01 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
海妖 该用户已被删除
5#
发表于 2015-1-26 19:12:48 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
精灵巫婆 该用户已被删除
6#
发表于 2015-2-3 12:31:55 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
柔情似水 该用户已被删除
7#
发表于 2015-2-8 23:46:53 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
莫相离 该用户已被删除
8#
发表于 2015-2-26 13:52:48 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
小妖女 该用户已被删除
9#
发表于 2015-3-8 15:26:26 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
冷月葬花魂 该用户已被删除
10#
发表于 2015-3-16 03:16:05 | 只看该作者
兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的
山那边是海 该用户已被删除
11#
发表于 2015-3-22 19:10:35 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-10 04:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表