sS_r = "http://"
sU_r = Split(Request.ServerVariables("SERVER_NAME")&Request.ServerVariables("script_name"),"/")
for i=0 to ubound(sU_r)
if i<ubound(sU_r) then
sS_r = sS_r + sU_r(i) + "/"
end if
next
Function htmll(mulu,htmlmulu,FileName,filefrom,vena,venb,venc,vend)
if htmlmulu="" then htmlmulu=""
if mulu="" then
mulu=indexmulu&mulu
FilePath=Server.MapPath(mulu)&"\"&FileName
else
mulu=Server.MapPath(indexmulu)&mulu
FilePath=mulu&"\"&FileName
end if
htmlmulu=indexmulu&htmlmulu
Do_Url=sS_r&filefrom
Do_Url=Do_Url&"?"&vena&venb&"&"&venc&vend
strUrl=Do_Url
set objXmlHttp=Server.createObject("Microsoft.XMLHTTP")
objXmlHttp.open "GET",strUrl,false
objXmlHttp.send()
binFileData=objXmlHttp.responseBody
Set objXmlHttp=Nothing
set objAdoStream=Server.createObject("ADODB.Stream")
objAdoStream.Type=1
objAdoStream.Open()
objAdoStream.Write(binFileData)
objAdoStream.SaveToFile FilePath,2
objAdoStream.Close()
set objAdoStream=nothing
End Function
------------------------------------------------ -----------------------------------------------------
1.在服务器端的xmlhttp.Open("GET",url,false)异步必须是关闭的,而客户端的异步是打开的
因为服务器返回的代码要求一次性完成,若把异步打开 不等数据没有抓举完毕就返回给客户端了
2. 在服务器端的xmlhttp.Responsebody 这里用的是Responsebody而不是ResponseText或ResponseXml, 一开始我是用ResponseText,但在函数bytesToBSTR转换编码的时候提示错误,经过比较发现其他的asp小偷程序里的代码都是 Responsebody.分析后,发现Responsebody ResponseText ResponseXML的差别如下
ResponseText 返回数据为字符性文本数据 数据源为任何文本性数据
ResponseXML 返回数据为DOM对象,可以用JS通过DOM进行加工控制的,单源数据必须是XML
Responsebody 返回的是二进制数据,可以通过Adodb.Stream进行加工控制,数据源可以为任何数据