手机
当前位置:查字典教程网 >编程开发 >ASP教程 >利用xmlhttp和adodb.stream加缓存技术下载远程Web文件
利用xmlhttp和adodb.stream加缓存技术下载远程Web文件
摘要:

<%

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

'---------------利用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

%>

【利用xmlhttp和adodb.stream加缓存技术下载远程Web文件】相关文章:

用ASP VBS xmlhttp adodbstream下载和保存图片的代码

如何在网页中显示服务器时间(asp)

用正则和xmlHttp实现的asp小偷程序

同文件夹内文本搜索器(vbs)

ASP利用adodb.stream下载文件但不打开的方法

利用Split函数进行多关键字检索

用ASP打开远端MDB文件的方法

利用Adodb.Stream制作彩色验证码

用asp实现检测文件编码

用xmlhttp编写web采集程序

精品推荐
分类导航