当前位置: 首页 > 图文教程 > 网络编程 > ASP > 利用xmlhttp和adodb.stream加缓存技术下载远程Web文件

ASP
ASP应用 用GetString来提高ASP的速度
ASP怎样可以获得代码中第一张图片地址
ASP开发经验谈 ASP开发10条经验总结
如何用ASP来获取客户端真实IP的地址?
用ASP实现就MP3曲目信息的操作全攻略
ASP中连接数据库的错误解决新解决办法
ASP后门之终极伪装
ASP生成静态htm页面基本代码
session在验证管理登陆时的使用方法
asp当中判断函数一览
IIS6.0 ASP 错误解析
ASP与JSP的区别和联系
几种打开记录集方式的比较
cookie和session机制之间的区别与联系
ASP的含义、功能和选择
ASP中巧用Response属性 -- contenttype
ASP内置对象Request和Response的详解
ASP错误大全
人文的ASP开发基础入门之简介
ASP 3.0高级编程(十二)

ASP 中的 利用xmlhttp和adodb.stream加缓存技术下载远程Web文件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 32 ::
收藏到网摘: n/a

<%
'----------远程获取内容,并将内容存在本地电脑上,包括任何文件!----------
'---------------利用xmlhttp和adodb.stream-----------------
'On Error Resume Next
'-------------------------------定义输出格式-----------------------------
path=request("path")
if path ="" then
path="http://pcqc.86516.com/index.asp"
'这里定义的网址是百度,,注意一定要有文件后缀
end if

sPath = Path
if left(lcase(path),7) <> "http://" then
'-------------如果前面没有http就是本地文件,交给LocalFile处理------------
LocalFile(path)
else
'--------------------否则为远程文件,交给RemoteFile处理------------------
RemoteFile(Path)
end if
'Response.Write err.Description
'--------------处理函数-----------

sub LocalFile(Path)
'-------------------如果为本地文件则简单的跳转到该页面-------------------
'Response.Redirect Path
Response.write "发生错误!"
End Sub
Sub RemoteFile(sPath)
'-------------------------处理远程文件函数------------------------------
FileName = GetFileName(sPath)
'-------------GetFileName为把地址转换为合格的文件名过程-------------
FileName = Server.MapPath("Cache/" & FileName)
Set objFso = Server.CreateObject("Scripting.FileSystemObject")
'Response.Write fileName
if objFso.FileExists(FileName) Then
'--------------检查文件是否是已经访问过,如是,则简单跳转------------
Response.Redirect "cache/" & GetFileName(path)
Else
'----------------否则的话就先用GetBody函数读取----------------------
'Response.Write Path
t = GetBody(Path)
'-----------------用二进制方法写到浏览器上--------------------------
Response.BinaryWrite t
Response.Flush
'-----------------输出缓冲------------------------------------------
SaveFile t,GetFileName(path)
'------------------将文件内容缓存到本地路径,以待下次访问-----------
End if
Set objFso = Nothing
End Sub

Function GetBody(url)
'-----------------------本函数为远程获取内容的函数---------------------
'on error resume next
'Response.Write url
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
'----------------------建立XMLHTTP对象-----------------------------
With Retrieval
.Open "Get", url, False, "", ""
'------------------用Get,异步的方法发送-----------------------
.Send
'GetBody = .ResponseText
GetBody = .ResponseBody
'------------------函数返回获取的内容--------------------------
End With
Set Retrieval = Nothing
'response.Write err.Description
End Function

Function GetFileName(str)
'-------------------------本函数为合格化的文件名函数-------------------
str = Replace(lcase(str),"http://","")
str = Replace(lcase(str),"//","/")
str = Replace(str,"?","")
str = Replace(str,"&","")
str = Replace(str,"/","")
str = replace(str,vbcrlf,"")
GetFileName = str
End Function

sub SaveFile(str,fName)
'-------------------------本函数为将流内容存盘的函数-------------------
'on error resume next
Set objStream = Server.CreateObject("ADODB.Stream")
'--------------建立ADODB.Stream对象,必须要ADO 2.5以上版本---------
'objStream.Type = adTypeBinary
objStream.Type = 1
'-------------以二进制模式打开-------------------------------------
objStream.Open
objstream.write str
'--------------------将字符串内容写入缓冲--------------------------
'response.Write fname
'路径注意
objstream.SaveToFile "E:\webroot\pcqc\vip\UploadFile\cache\"&fName,2
'objstream.SaveToFile "d:\cache\" & fName,adSaveCreateOverWrite
'--------------------将缓冲的内容写入文件--------------------------
'response.BinaryWrite objstream.Read
objstream.Close()
set objstream = nothing
'-----------------------关闭对象,释放资源-------------------------
'response.Write err.Description
End sub

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