广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-05-07 10:24:18 次阅读 稿源:互联网
    零七广告

    <%
    '----------远程获取内容,并将内容存在本地电脑上,包括任何文件!----------
    '---------------利用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
    %>

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告