您的位置:首页 > 理论基础 > 计算机网络

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

2010-02-28 09:14 597 查看
下面重新注释了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: