利用xmlhttp和adodb.stream加缓存技术下载远程Web文件
2018-09-06 12:26
<%
----------远程获取内容,并将内容存在本地电脑上,包括任何文件!----------
---------------利用xmlhttp和adodb.stream-----------------
On Error Resume Next
-------------------------------定义输出格式-----------------------------
path=request(path)
if path = then
path=
这里定义的网址是百度,,注意一定要有文件后缀
end if
sPath = Path
if left(lcase(path),7) <>
-------------如果前面没有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),
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
%>
文章标题:利用xmlhttp和adodb.stream加缓存技术下载远程Web文件
文章链接:http://soscw.com/essay/10328.html