利用xmlhttp和adodb.stream加缓存技术下载远程Web文件
利用xmlhttp和adodb.stream加缓存技术下载远程Web文件
发布时间:2016-12-29 来源:查字典编辑
摘要:

<%

'----------远程获取内容,并将内容存在本地电脑上,包括任何文件!----------

'---------------利用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:webrootpcqcvipUploadFilecache"&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

%>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新ASP教程学习
热门ASP教程学习
编程开发子分类