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-8dim 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 withset objstream = nothing End Function
获取其他服务器的数据和获取文本是一个道理,通过图片的url获取图片的数据处理,只是保存的时候不需要把它转换成字符串了。这里利用adodb.stream的SaveToFile方法将其保存在本地服务器上。
Public function saveimage(tofile)dim objStream,imgsimgs=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=nothingend function
实现了保存文本数据和二进制数据,那就无所不能了*^_^*
附一个包括简单功能类完整代码:
Class xhttpprivate cset,sUrlPrivate Sub Class_Initialize()cset="UTF-8"end sub
Private Sub Class_Terminate()End Sub
Public Property LET URL(theurl)sUrl=theurlend 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 propertypublic property GET Html()Html=BytesToBstr(getBody(sUrl))end propertyprivate Function BytesToBstr(body)'Cset:GB2312 UTF-8dim 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 withset objstream = nothing End Function
private function getBody(surl)dim xmlHttpset xmlHttp=server.createobject("MSXML2.XMLHTTP")xmlHttp.open "GET",surl,falsexmlHttp.sendif xmlHttp.readystate<>4 then exit functionend ifgetBody=xmlhttp.responsebodyset xmlHttp=nothingend function
Public function saveimage(tofile)dim objStream,imgsimgs=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=nothingend function
end class
TEST:dim o set o=new xhttpo.url="http://www.baidu.com/img/logo-yy.gif"o.saveimage "blue.gif"set o=nothing