% dim act,ifLogin,loginUrl,loginActUrl,loginData,fileUrl,fileName act=request.QueryString("act") if(act="do") then ifLogin=Cint(request.QueryString("ifLogin")) loginActUrl=request.Form("loginActUrl") loginData=request.Form("loginData") fileUrl=request.Form("fileUrl") fileName=mid(fileUrl,instrrev(fileUrl,"/")+1) extPos=instrrev(fileName,"?") if(extPos>0) then fileName=left(fileName,extPos-1) end if if(ifLogin=1) then call PostHttpPage(loginActUrl,loginData) end if call DownloadFile(fileUrl,fileName) else %> form name="form1" method="post" action="?act=do"> p>是否登录: input name="ifLogin" type="radio" value="1"> 是 input name="ifLogin" type="radio" value="0" checked> 否 /p> p>登录提交地址: input name="loginActUrl" type="text" size="50"> /p> p> 登录数据:input name="loginData" type="text" size="50"> /p> p> 要保存的远程文件URL: input name="fileUrl" type="text" size="50"> /p> p> input type="submit" name="Submit" value="提交"> input type="reset" name="Submit2" value="重写"> /p> /form> % end if Function BytesToBstr(body,code) dim objstream set objstream = Server.CreateObject("adodb.stream") objstream.Type = 1 objstream.Mode =3 objstream.Open objstream.Write body objstream.Position = 0 objstream.Type = 2 objstream.Charset =code BytesToBstr = objstream.ReadText objstream.Close set objstream = nothing End Function Function PostHttpPage(loginActUrl,PostData) Dim xmlHttp Dim RetStr Set xmlHttp = CreateObject("Microsoft.XMLHTTP") xmlHttp.Open "POST", loginActUrl, False XmlHTTP.setRequestHeader "Content-Length",Len(PostData) xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" xmlHttp.Send PostData If Err.Number > 0 Then Set xmlHttp=Nothing response.Write("提交登录时出错!提交数据:"PostData) Exit Function End If PostHttpPage=BytesToBstr(xmlHttp.responseBody,"GB2312") Set xmlHttp = nothing End Function ''''''''''''''''''''''''''''''''''''''''''' function DownloadFile(url,filename) Set xml = Server.CreateObject("Msxml2.XMLHTTP") '创建对象
xml.Open "GET",url,False xml.Send '发送请求
if Err.Number>0 then Response.Status="404" else Response.ContentType="application/octet-stream" Response.AddHeader "Content-Disposition:","attachment; filename=" filename Range=Mid(Request.ServerVariables("HTTP_RANGE"),7) if Range="" then Response.BinaryWrite(xml.responseBody) else S.position=Clng(Split(Range,"-")(0)) Response.BinaryWrite(xml.responseBody) End if end if Response.End Set xml = Nothing end function ''''''''''''''''''''''''''''''''''''''''''''''''''''' %>