您的位置:首页 > 网络编程 > ASP

获取远程服务器数据(asp,adodb.stream,保存远程图片,XMLHTTP)

日期:2007-02-08 10:43:01 点击: 来自: 作者:

关于XMLHTTP的细节可以参考
http://www.channel7.cn/2004/11-18/14458.html

关于adodb.stream的细节可以参考
http://www.daima.com.cn/Info/32/Info22138/


下面重新注释了BytesToBstr函数,它的作用是把由xmlhttp.responsebody返回的字节数组转换成文本字符串,如果数据要用做屏幕输入则必须转换否则汉字会出现乱码.

Function BytesToBstr(body)
'Cset:GB2312 UTF-8
dim objstream
set objstream = Server.CreateObject("adodb.stream")
with objstream
.Type = 1 '设置返回数据类型为二进制
.Mode = 3 '打开模式为读写
.Open
.Write body '将指定的数据装入对像中 body为内容
.Position = 0 '指定对像内数据的当前指针
.Type = 2 '设置返回数据类型为文本
.Charset = Cset '设定字符集类型
BytesToBstr = .ReadText '取对象内的文本
.Close
end with
set objstream = nothing
End Function


获取其他服务器的数据和获取文本是一个道理,通过图片的url获取图片的数据处理,只是保存的时候不需要把它转换成字符串了。这里利用adodb.stream的SaveToFile方法将其保存在本地服务器上。

Public function saveimage(tofile)
dim objStream,imgs
imgs=getBody(sUrl)'取得图片的具休内容的过程
Set objStream = Server.CreateObject("ADODB.Stream")'建立ADODB.Stream对象,必须要ADO 2.5以上版本
with objStream
.Type =1'以二进制模式打开
.Open
.write imgs'将字符串内容写入缓冲
.SaveToFile server.mappath(tofile),2'将缓冲的内容写入文件
.Close()
end with
set objstream=nothing
end function


实现了保存文本数据和二进制数据,那就无所不能了*^_^*

附一个包括简单功能类完整代码:

Class xhttp
private cset,sUrl
Private Sub Class_Initialize()
cset="UTF-8"
end sub


Private Sub Class_Terminate()
End Sub

Public Property LET URL(theurl)
sUrl=theurl
end property

public property GET BasePath()
BasePath=mid(sUrl,1,InStrRev(sUrl,"/")-1)
end property

public property GET FileName()
FileName=mid(sUrl,InStrRev(sUrl,"/")+1)
end property
public property GET Html()
Html=BytesToBstr(getBody(sUrl))
end property
private Function BytesToBstr(body)
'Cset:GB2312 UTF-8
dim objstream
set objstream = Server.CreateObject("adodb.stream")
with objstream
.Type = 1 '设置返回数据类型为二进制
.Mode = 3 '打开模式为读写
.Open
.Write body '将指定的数据装入对像中 body为内容
.Position = 0 '指定对像内数据的当前指针
.Type = 2 '设置返回数据类型为文本
.Charset = Cset '设定字符集类型
BytesToBstr = .ReadText '取对象内的文本
.Close
end with
set objstream = nothing
End Function

private function getBody(surl)
dim xmlHttp
set xmlHttp=server.createobject("MSXML2.XMLHTTP")
xmlHttp.open "GET",surl,false
xmlHttp.send
if xmlHttp.readystate<>4 then
exit function
end if
getBody=xmlhttp.responsebody
set xmlHttp=nothing
end function


Public function saveimage(tofile)
dim objStream,imgs
imgs=getBody(sUrl)'取得图片的具休内容的过程
Set objStream = Server.CreateObject("ADODB.Stream")'建立ADODB.Stream对象,必须要ADO 2.5以上版本
with objStream
.Type =1'以二进制模式打开
.Open
.write imgs'将字符串内容写入缓冲
.SaveToFile server.mappath(tofile),2'-将缓冲的内容写入文件
.Close()
end with
set objstream=nothing
end function

end class


TEST:
dim o
set o=new xhttp
o.url="http://www.baidu.com/img/logo-yy.gif"
o.saveimage "blue.gif"
set o=nothing

More..素材图片 Picture Navigation
ASP热门 Class Hot
ASP推荐 Class Commend
版权所有:中国网站资源 2005- 未经授权禁止复制或建立镜像 This Site Tech:XHTML+DIV+CSS+Javascript
CopyRight ® 2005- www.chinaddv.com online services. all rights reserved. ICP06016627
Optimized to 1024x768 to Firefox,Netscape,Opera,MS-IE6+.